示例脚本call.bat
echo %1.txt %2.txt %3.txt
a)现在,如果我用
来调用它c:\>call Huey Dewey Louie
它会打印出来
Huey.txt Dewey.txt Louie.txt
b)如果我用
打电话c:\>call Huey Dewey
它会打印出来
Huey.txt Dewey.txt .txt
如果我没有给出%3,我如何跳过最后一部分?(当然,参数的数量可以超过3个,...让我们说8或者9)。
答案 0 :(得分:2)
call.bat
:label
echo %1.txt
SHIFT
if not "%1" == "" goto label
这是你要找的吗? 您可能希望在每个命令“@”之前设置命令的回显,或者在脚本开头放置“@echo off”。
答案 1 :(得分:2)
我假设您想要在一行中输出所有内容,如示例中所示。如果是这样,这是一种方式:
test.bat的
@echo off
set cmd=echo
for %%A in (%*) do call :Add %%A
%cmd%
goto:EOF
:Add
set cmd=%cmd% %1.txt
goto:EOF
看起来像这样:
C> test 1 2 3 4 5
1.txt 2.txt 3.txt 4.txt 5.txt
C>
这不处理没有很好地提供参数的情况(它只会说“Echo is on”),但IF测试会解决这个问题。