多线程批处理文件传递参数

时间:2015-07-13 05:10:22

标签: windows multithreading batch-file

多线程部分已经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%并不起作用。看起来我错过了一点,无法找到出路。

感谢大家的帮助或至少尝试。

1 个答案:

答案 0 :(得分:0)

在主脚本的开头添加变量初始化代码,并另外移动命令行参数9次:

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
for /L %%a in (1,1,9) do shift

因此,我认为你不需要filelist

相关问题