多线程的一部分已经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