命令行参数的局限性之一是它只能接受%9之前的参数,让无涯教程以这个限制为示例。

@echo off
echo %1
echo %2
echo %3
echo %4
echo %5
echo %6
echo %7
echo %8
echo %9
echo %10

如果以上代码存储在名为test.bat的文件中,并且该文件运行为

test.bat a b c d e f g h i j

然后将是输出。

a 
b
c
d
e
f
h
i
a0

从上面的输出中可以看到,应该显示为" j"的最终值显示为a0。这是因为没有称为%10的参数。

通过使用SHIFT运算符可以避免此限制。批处理文件处理完第一个参数后,可以将它们移动(只需插入一行,仅使用SHIFT命令即可),导致%1获得值B,%2获得值C等,直到%9,这现在获取值J。继续此过程,直到至少%9为空。

让无涯教程看一个示例,该示例说明如何使用SHIFT运算符克服命令行参数的限制。

@ECHO OFF
:Loop

IF "%1"=="" GOTO Continue
   echo %1%
SHIFT
GOTO Loop
:Continue

如果以上代码存储在名为test.bat的文件中,并且该文件运行为

test.bat a b c d e f g h i j

然后将是输出。

a 
b
c
d
e
f
h
i
j

参考链接

https://www.learnfk.com/batch-script/batch-script-using-shift-operator.html