2015-07-13 85 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

相關問題