这让我疯狂了一段时间,我从来没有能够正确地弄明白。我无法获得一个循环或一批多个文件来执行命令,然后使用输入的文件名输出它们但稍微改变了。
我知道这很简单,但我无法理解。
最简单的例子是转换音频文件。我有数百甚至数千,我想同时转换完全相同的方式。
使用sox.exe作为示例我想将文件夹中的所有24位FLAC文件转发为16位wav文件...单个文件命令是: sox.exe [inputfile] -b 16 [outputfile] rate 44100 dither -s
使用* .flac似乎对输入工作正常,但输出似乎永远不能正常工作。有人能告诉我在这种情况下创建循环的正确代码......是使用for / f命令还是类似的东西?
我会选择每次运行的脚本或者我可以放入名为convert.bat的批处理文件的脚本,然后我可以将文件夹或所有文件拖放到我要处理的文件夹上
...类似的东西 因为* .flac; sox.exe“$ i”-b 16“$ i.wav”rate 44100 dither -s;完成
由于
答案 0 :(得分:0)
如你所说,一个for循环。
for %%i in (*.flac) do (
converter.exe %%i
)
:: Use %i if you're in Command Prompt.
答案 1 :(得分:0)
因为您(可能)需要每个输入文件一个输出文件(对于所有数千个输入文件而言不是一个输出文件),您必须为每个单个输入文件执行应用程序。很高兴,cmd
为&#34提供了一个简单的解决方案;为每个文件执行相同的操作":
for %%A in (*.flac) do (
sox.exe "%%A" -b 16 "%%~nA.wav" rate 44100 dither -s
)
%%A
一次代表一个输入文件。您可以使用修饰符来处理文件名的不同部分(请参阅for /?
),例如%%~nA
仅为您提供名称(没有驱动器,没有文件夹,没有扩展名)。如果需要,您可以使用带"%%~dA\output folder\%%~nA.wav"
的混合字符串(使用与输入文件相同的驱动器号,硬编码的特殊文件夹,输入文件的名称和硬编码扩展名。