FOR /f "tokens=1*" %%x IN ("%*") DO ECHO application %%y
其中1
是要跳过的参数数量。
测试中...主要的.bat
文件(q20572424.bat)
@ECHO OFF
SETLOCAL
ECHO master[%*]
FOR /f "tokens=2*" %%x IN ("%*") DO CALL q20572424a.bat %%y
FOR /f "tokens=1*" %%x IN ("%*") DO CALL q20572424a.bat %%y
FOR /f "tokens=*" %%x IN ("%*") DO CALL q20572424a.bat %%x
GOTO :EOF
子公司.bat
(q20572424a.bat)
@ECHO OFF
SETLOCAL
ECHO slave=[%*]
FOR /f "tokens=2*" %%x IN ("%*") DO CALL q20572424b.bat %%y
FOR /f "tokens=1*" %%x IN ("%*") DO CALL q20572424b.bat %%y
FOR /f "tokens=*" %%x IN ("%*") DO CALL q20572424b.bat %%x
GOTO :EOF
第二个子文件夹 .bat
(q20572424b.bat)
@ECHO OFF
SETLOCAL
ECHO subslave=[%*]
GOTO :EOF
结果:
从运行 q20572424 -opt-1 -opt-2 /opt-a /opt-b=value
master[-opt-1 -opt-2 /opt-a /opt-b=value]
slave=[/opt-a /opt-b=value]
subslave=[]
subslave=[/opt-b=value]
subslave=[/opt-a /opt-b=value]
slave=[-opt-2 /opt-a /opt-b=value]
subslave=[/opt-b=value]
subslave=[/opt-a /opt-b=value]
subslave=[-opt-2 /opt-a /opt-b=value]
slave=[-opt-1 -opt-2 /opt-a /opt-b=value]
subslave=[/opt-a /opt-b=value]
subslave=[-opt-2 /opt-a /opt-b=value]
subslave=[-opt-1 -opt-2 /opt-a /opt-b=value]
看起来是正确的。在每种情况下,子批处理程序都直接接收参数;每次调用时删除的前导参数数量分别为2、1、0。
W7HP - 对我有效!
^
。 - Corey Ogburn"
和单引号'
也不行。 - Florent Georges