2016-12-07 67 views
-1

這讓我瘋狂了一段時間,我從未能夠正確理解它。我無法得到一個循環,或一批多個文件來執行命令,然後使用輸入的文件名輸出它們,但稍微改變。用於輸出與輸入文件同名的文件的批處理命令行腳本

這很簡單,我知道但我無法弄清楚。

最簡單的例子是轉換音頻文件。我有數百,如果不是數千我想同時轉換完全相同的方式。

以sox.exe爲例我想將文件夾中的所有24位FLAC文件轉換爲16位wav文件...單個文件命令爲: sox.exe [inputfile] -b 16 [outputfile ]速率44100抖動-s

使用* .flac似乎對輸入正常工作,但輸出似乎從未正常工作。有人可以告訴我在這種情況下創建一個循環的正確代碼...是使用for/f命令或類似的東西?

我會採取我每次運行的腳本或腳本,我可以把它放到一個名爲convert.bat的批處理文件中,然後我可以將一個文件夾或所有文件拖放到我想要的文件上處理。

...類似於 爲我in * .flac; sox.exe「$ i」-b 16「$ i.wav」率44100 dither -s;完成

謝謝

+1

對於flac目錄,「%i在(* .flac)中執行「X:\ path \ to \ sox.exe」「%i」「X:\ destination \%〜ni.wav」'只需添加您所需的選項。 – Compo

回答

0

正如你所說,一個for循環。

for %%i in (*.flac) do (
    converter.exe %%i 
) 
:: Use %i if you're in Command Prompt. 
0

,你(可能)需要一個OUTPUTFILE每inputfile中(而不是一個單一的OUTPUTFILE爲您的所有數以千計的inputfiles的),你必須執行每一個單inputfile中您的應用程序。欣然,cmd提供了一個簡單的解決方案,「做同樣的事情每個文件」:

for %%A in (*.flac) do (
    sox.exe "%%A" -b 16 "%%~nA.wav" rate 44100 dither -s 
) 

%%A表示每次一個inputfile中。您可以使用修飾符來尋址文件名的不同部分(請參見for /?),例如%%~nA僅爲您提供名稱(無驅動器,無文件夾,無擴展名)。如果需要,可以使用帶有"%%~dA\output folder\%%~nA.wav"的混合字符串(使用與輸入文件相同的驅動器盤符,硬編碼的特殊文件夾,輸入文件的名稱和硬編碼擴展名)

相關問題