2017-04-02 72 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

相關問題