2015-07-13 54 views
1

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

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

+0

你已经拥有它的'filelist'变量,如果我理解正确的问题,那么只需添加'%文件列表%'到oneconversion.bat的参数。否则,你可以澄清它有什么问题。 – wOxxOm

+0

我编辑问题以清理更多。感谢您指点。 – inovasyon

+0

所以你想调用你的主代码是这样的:'main.bat resize incsmall width height ....... pngqt FILE1 FILE2 FILE3 FILE4''? – wOxxOm

回答

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,我想。

+0

我认为我的思想已被封锁。当然,自从我开始使用SHIFT之后,为什么不继续使用它,而不是修改很多代码部分(总共有250多行)。谢谢你以最直接的方式提醒我。 – inovasyon

相关问题