• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

cmd指令,bat脚本完美

武飞扬头像
Asciphx
帮助1

cmd指令的剖析

  • %查看相对路径或是源目标
  • %~x查看文件名后缀
  • %~n查看文件名不含后缀
  • %~z查看大小
  • %~s查看绝对简写路径
  • %~f查看绝对路径
  • %~d查看盘符
  • %~t查看修改时间
  • if [not] defined variable 可以判断变量是否有内容
  • %~I 删除外围"引号
  • %~fI 完整路径
  • %~dI 驱动器号
  • %~pI 路径
  • %~nI 文件名
  • %~xI 文件扩展名
  • %~dpI: 驱动器号和路径
  • %~nxI: 文件名加扩展名
  • 命令文件连接符
  • *, ? 文件通配符
  • “” 字符串界定符
  • ^ 转义符,其后面的特殊字符按原样输出
  • | 命令管道符
  • >> 文件重定向符
  • @ 命令行回显屏蔽符
  • / 参数开关引导符
  • : 批处理标签引导符
  • % 批处理变量引导符
  • 组合命令: &
    • 用法: 第一条命令 & 第二条命令 [& 第三条命令…]
    • 同时执行多条命令,而不管命令是否执行成功。
  • &&
    • 用法: 第一条命令 && 第二条命令 [&& 第三条命令…]
    • 同时执行多条命令,当碰到执行出错的命令将不执行后面的命令,如果一直没有出错则一直执行完所以命令。
  • ||
    • 用法: 第一条命令 || 第二条命令 [|| 第三条命令…]
    • 同时执行多条命令,当碰到执行正确的命令将不执行后面的命令,如果一直没有出现正确执行的命令则一直执行完所以命令。
  • | 管道命令
    • 用法: 第一条命令 | 第二条命令 [| 第三条命令…]
    • 将第一条命令的结果作为第二条命令的参数来使用
  • > , >>, 输出重定向命令
    • 将一条命令或某个程序输出结果重定向到特定文件中。> 与 >> 的区别在于:
    • > 会清除原有文件中的内容后写入指定文件,
    • >> 只会追加内容到指定文件中,而不会改变其中的内容。
  • <, >&, <&
    • < 从文件中而不是键盘中读入命令输入。
    • >& 将一个句柄的输出写入到另一个句柄的输入中。
    • <& 从一个句柄读入输入并将其写入到另一个句柄输出中。
  • set [[/a [expression]] [/p [variable=]] string]
  • % 目录(current directory)
  • TE% 日期
  • %TIME% 时间
  • %RANDOM% 随机数
  • (,) 分组
  • ,-,*,/,% 算法
  • <<, >> 逻辑移位
  • &, |, ^ 位运算

cmd指令与.bat脚本的注意事项与区分

实际上,在命令行中,单个%号才会起作用,而在.bat脚本中,有些作用域也就是大括号中的%号不变,作用域外的%号要变成两个%号。

cmd指令中的for循环结构

第一种是(x,y,z)从x到z(x,z都是数字),步长为y.例子中是从1到5,步长为1

 for /l %i in (1,1,5) do

第二种是(x,y,z)表示就是在x,y,z三个值的时候

 for  %i in (1,2,3) do 

第三种是一种带参数的for循环,tokens是列,skip是跳跃间隔,delims= 表示换行符分隔。表示找这个头文件中,每次换行的值的最后面的文件,全部输出到一个头文件中,如有扩展可以自行修改。

for /f "tokens=2 skip=1 delims= " %i in (.\include\crow.h) do type .\include\crow\%~nxi >> amalgamate\crow_all.h

若是另起一个.bat文件则需要把%号改成%%

for /f "tokens=2 skip=1 delims= " %%i in (.\include\crow.h) do type .\include\crow\%%~nxi >> amalgamate\crow_all.h

copy指令的妙用

如:把文件合并

copy /b 2.txt 3.txt 4.txt  5.txt

上面是合并指定txt类型,下面是合并所有这种txt类型的文件

type *.txt  >> 0.txt

@echo的用途

一般是用来当做console.log来使用,@echo后面一律视为文本

bat脚本文件实战[需要结合ffmpeg使用]

下面文件保存为slice.bat,用于截取mp4片段

’@echo off
chcp 65001
:again
cls
echo mp4名:
set /p x=
echo 终点时间(秒:00):
set /p z=
call ffmpeg -ss 00:00:00.00 -to 00:00:%z% -i %x%.mp4 -vcodec copy -acodec copy %x%_.mp4
pause

下面文件保存为gtime.bat,可以获取mp4的时间

@echo off
chcp 65001
:again
cls
echo mp4名:
set /p x=
call ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 -i %x%.mp4
pause

下面文件保存为ts2m.bat,可以把.ts文件连接到一个mp4文件

@echo off
chcp 65001
:again
cls
echo 开始位:
set /p x=
echo 结束位:
set /p y=
set s=
for /l %%i in (%x%,1,%y%) do (if %%i equ %x% (set s=^"concat^:%%i.ts) else (call set s=%%s%%^|%%i.ts))
set s=ffmpeg -i %s%" -acodec copy -vcodec copy o.mp4
echo %s%
call %s%
pause

下面文件保存为m2ts.bat,可以把.mp4文件全部转为ts文件,标识符一般用_

@echo off
chcp 65001
:again
cls
echo 标识符:
set /p str=
echo 开始位:
set /p x=
echo 结束位:
set /p y=
echo for /l %%i in (%x%,1,%y%) do (ffmpeg -i %str%%%i.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb %%i.ts)
for /l %%i in (%x%,1,%y%) do (ffmpeg -i %str%%%i.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb %%i.ts)
pause

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbjagc
系列文章
更多 icon
同类精品
更多 icon
继续加载