Batch file cmd批处理文件;从文本文件中指定不同的参数
我有一个文本文件(trimlist.txt),其中的行数可变,但每一行都类似于一个可变的文件路径和名称以及两个由coma分隔的数字:Batch file cmd批处理文件;从文本文件中指定不同的参数,batch-file,Batch File,我有一个文本文件(trimlist.txt),其中的行数可变,但每一行都类似于一个可变的文件路径和名称以及两个由coma分隔的数字: E:\test\00037_20161001_100956.mov,3.6369666,1.2345666 我需要从每一行中获得3个不同的变量:在本例中为mov、3.6369666和1.234566。 我可以像这样得到最后两个变量 set prevfile= for /F "tokens=1,2,3 delims=," %%F in (E:\trimlist.
E:\test\00037_20161001_100956.mov,3.6369666,1.2345666
我需要从每一行中获得3个不同的变量:在本例中为mov、3.6369666和1.234566。
我可以像这样得到最后两个变量
set prevfile=
for /F "tokens=1,2,3 delims=," %%F in (E:\trimlist.txt) do (
if "%%F"=="!prevfile!" (
if "!counter!"=="" (set counter=1) else (set /a counter+=1)
) else (
set counter=
set "prevfile=%%F"
)
ffmpeg -ss "%%G" -i "%%F" -c copy -t "%%H" "%%~dpnF!counter!-trimmed.mov"
因此,对于上面的文本文件,我的最终命令将是
ffmpeg -ss 3.6369666 -i "E:\test\00037_20161001_100956.mov" -c copy -t 1.2345666 "E:\test\00037_20161001_100956 01 -trimmed.mov"
我希望E:\test\00037\u 20161001\u 100956 01-trimmed.mov的“mov”
是从文本文件中获取的变量
任何帮助都将不胜感激。尝试添加
echo %%~xF
进入你的外环
现在还不清楚您实际想要做什么——举一个所需输出元素的示例,也许会更容易提供帮助
set "prevfile="
set "counter="
for /F "tokens=1,2,3 delims=," %%F in (E:\trimlist.txt) do (
if "%%F"=="!prevfile!" (
if not defined counter set /a counter=10000
set /a counter+=1
) else (
set "counter="
set "prevfile=%%F"
)
if defined counter (ffmpeg -ss "%%G" -i "%%F" -c copy -t "%%H" "%%~dpnF-trimmed%%~xF"
) else (
ffmpeg -ss "%%G" -i "%%F" -c copy -t "%%H" "%%~dpnF !counter:~-2! -trimmed%%~xF"
)
我相信这应该是合适的
注意:语法设置“var=value”
(其中值可能为空)用于确保分配的值中不包含任何多余的尾随空格<代码>设置/a
可以安全地“无报价”使用
如果未定义var
,则set var+=1
将愉快地将1
分配给var
由于定义了
计数器
后,您需要在目标文件名中前导零填充值的任一侧留一个空格,因此最简单的方法是在您希望开始计数时,将计数器
初始化为以“00”结尾的数字>100,然后选择字符串的最后两个字符。终于找到了该怎么做
setlocal enableDelayedExpansion
set prevfile=
for /F "tokens=1,2,3 delims=," %%F in (E:\trimlist.txt) do (
if "%%F"=="!prevfile!" (
if "!counter!"=="" (set counter=1) else (set /a counter+=1)
) else (
set counter=
set "prevfile=%%F"
)
ffmpeg -ss "%%G" -i "%%F" -c copy -t "%%H" "%%~dpnF!counter!-trimmed%%~xF"
)
我只需要使用
%%~xF
从文件中获取扩展名,您可以使用cmd
来实现这一点,但它往往很难看且容易出错。在某种程度上,所有cmd
人员都应该选择调查powershell。您是否检查过:您想要的是在处拆分,
感谢您的回复。我编辑了我的第一篇文章,以显示命令应该是什么样子。希望有帮助。