同时批处理多个文件
Batch processing multiple files at the same time
我有这个批处理命令
@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 足够快 运行 这个 process.exe
同时处理 2 或 3 个文件,这将使文件的处理速度更快。
问题:我要如何更改命令才能使我的批处理文件同时处理 2-3 个文件?
以下启动最多 %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
命令只是为了说明原理)
我有这个批处理命令
@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 足够快 运行 这个 process.exe
同时处理 2 或 3 个文件,这将使文件的处理速度更快。
问题:我要如何更改命令才能使我的批处理文件同时处理 2-3 个文件?
以下启动最多 %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
命令只是为了说明原理)