多線程的一部分已經replied here偉大工程(感謝很多Magoo)多線程批處理文件傳遞參數
主代碼
SET /a instances=%NUMBER_OF_PROCESSORS%
:: make a tempfile
:maketemp
SET "tempfile=%temp%\%random%"
IF EXIST "%tempfile%?" (GOTO maketemp) ELSE (ECHO.>"%tempfile%a")
::
:loop
SET "nextfile=%~1"
IF NOT DEFINED nextfile (
DEL "%tempfile%a*" >NUL 2>NUL
::ECHO all done
exit
)
FOR /L %%a IN (1,1,%instances%) DO (
IF NOT EXIST "%tempfile%a%%a" (
>"%tempfile%a%%a" ECHO.
START /B "Instance %%a" oneconversion.bat "%~1" "%tempfile%a%%a" %%a
SHIFT
GOTO loop
)
)
timeout /t 1 >NUL
GOTO loop
的oneconversion.bat
代碼示例@ECHO OFF
SETLOCAL
CALL truepng.exe "%1"
CALL pngwolf.exe "%1"
DEL "%~2" >NUL 2>NUL
cls
exit
這個工作到現在爲止。
但是,當我在使用命令時保留前10個參數。
如何我保留命令
FOR /f "TOKENS=1-11*" %%a in ("%*") DO (
SET filelist=%%l
)
SET varresize=%1
SHIFT
SET varincsmall=%1
SET varwidth=%2
SET varheight=%3
SET varjpegqa=%4
SET varjpegpr=%5
SET varjpegex=%6
SET varpngqa=%7
SET varpngcl=%8
SET varpngqt=%9
我不知道我該如何使用%filelist%
主代碼中。並確定替換%~1
與%filelist%
不起作用。看起來我錯過了一點,找不到出路。
感謝大家會幫助或至少嘗試。
你已經擁有它的'filelist'變量,如果我理解正確的問題,那麼只需添加'%文件列表%'到oneconversion.bat的參數。否則,你可以澄清它有什麼問題。 – wOxxOm
我編輯問題以清理更多。感謝您指點。 – inovasyon
所以你想調用你的主代碼是這樣的:'main.bat resize incsmall width height ....... pngqt FILE1 FILE2 FILE3 FILE4''? – wOxxOm