批量处理多个文件同时进行

时间:2018-03-29 06:20:21

标签: windows batch-file batch-processing

我有这个批处理命令

@echo off
FOR %%i in (C:\input\*.*) DO (
echo processing %%i
if not exist "C:\output\%%i" process.exe "%%i" -out "C:\output\%%i"
)
echo ---- finished ----
pause

这里我的工具process.exe循环处理目录中的所有文件 - 如果结果尚不存在。

现在我的CPU足够快,可以同时在2个或3个文件上运行process.exe,这样可以更快地处理文件。

问题:如何更改命令以使我的批处理文件同时处理2-3个文件?

1 个答案:

答案 0 :(得分:2)

以下开始处理的最大数量为%bunch%。每当其中一个完成,另一个将启动。

@ECHO off
setlocal enabledelayedexpansion
set bunch=3

for %%a in (C:\input\*) do (
  call :loop 
  echo processing: %%a
  start "MyCommand" cmd /c timeout 60
  REM if not exist "C:\output\%%i" start "MyCommand" cmd /c process.exe "%%i" -out "C:\output\%%i"

)
call :loop
goto :eof

:loop  REM waits for available slot
echo on
for /f %%x in ('tasklist /fi "windowtitle eq MyCommand"  ^| find /c "cmd.exe"') do set x=%%x
if %x% geq %bunch% goto :loop
echo off
goto :eof

我没有你的process.exe,所以我必须猜测。但是REM ed行应该适合你。 (timeout命令只是为了显示原理)