Batch file cmd批处理文件;从文本文件中指定不同的参数

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.

我有一个文本文件(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.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。您是否检查过:您想要的是在
处拆分,
感谢您的回复。我编辑了我的第一篇文章,以显示命令应该是什么样子。希望有帮助。