我需要处理一些音频文件。每个文件都必须经过多个连续步骤,我已经为此编写了一个批处理文件。但我想要并行处理文件夹中的所有文件,以提高速度。所以我写了另一个批处理文件,它在一个循环中调用第一个。但是当我这样做时,我最终得到了多个命令窗口,即使批处理文件已关闭,它也会保持打开状态。
按照优先顺序,我怎样才能(a)根本不打开窗户,或(b)将窗户最小化,然后在完成时关闭;或(c)打开窗户,然后在完成时关闭。
for %%I in (*.mp3) DO (
start convert-mp3-to-m4b.bat "%%I"
)
我设法通过start cmd /c convert-mp3-to-m4b.bat "%%I" /B
实现了(c),但这更多的是运气而非判断。
答案 0 :(得分:1)
在@Stephan的帮助下,我最终得到了这个:
for %%Z in (*.mp3) DO (
start "converting-audio" /min cmd /c convert-mp3-to-m4b.bat "%%Z"
)
这会使窗口最小化,并在处理后关闭它们。我也很高兴max <n>
技巧,虽然我不得不调整一下代码。如果它对其他人有帮助,我的脚本现在看起来像这样:
@echo off
setlocal enabledelayedexpansion
set count=0
set max=4
for %%Z in (*.mp3) DO (
call :loop
start "converting-audio" /min cmd /c convert-mp3-to-m4b.bat "%%Z"
)
goto :eof
:loop
for /f "tokens=* USEBACKQ" %%G IN (`tasklist /fi "windowtitle eq converting-audio" ^| find "cmd.exe" /C`) do ( SET "count=%%G" )
if !count! GEQ !max! call :loop
一次处理四个文件,效果非常好。