在批处理脚本中如何“跳过空参数”?

时间:2012-01-14 14:22:35

标签: batch-file cmd

示例脚本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)。

2 个答案:

答案 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测试会解决这个问题。