2017-04-02 27 views
0

我有线的可变数目的一个文本文件(trimlist.txt),但每一行是由昏迷分离的可变文件路径和名称和2号类似:cmd批处理文件;从文本文件中分配不同的参数

E:\test\00037_20161001_100956.mov,3.6369666,1.2345666 

我需要从每行得到3个不同的变量:mov,3.6369666 & 1.2345666在这个例子中。 我能得到最后2个变量,这样

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_20161001_100956 01 -trimmed.mov"mov"从文本文件采取的变量。

任何帮助将不胜感激。

+0

*您可以*做到这一点与'cmd'但它往往是丑陋和错误,以得到该文件的扩展名易发。在某些时候,所有'cmd'人都应该选择调查powershell。 – paxdiablo

+0

你检查了这个:http://stackoverflow.com/questions/17289969/how-to-split-command-output-in-windows-command-prompt它接缝你想要的是拆分',' – Chris

回答

1

尝试增加

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" 
) 

我相信这应该适合。

注意:语法SET "var=value"(其中值可能为空)用于确保所分配的值中不包含任何杂散结尾空格。 set /a可以安全地使用“无引号”。

set var+=1将愉快地将1分配给var如果var未定义。

因为当counter已经被定义,你需要一个空间在目标文件名的领先零填充值两侧,最简单的方法是将初始化counter编号> 100“00”结尾当你想开始计数,然后选择字符串的最后两个字符。

+0

感谢您的回复。我编辑我的第一篇文章,以显示该命令应该看起来像什么。希望有所帮助。 – Joet

0

终于找到了如何做

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

相关问题