您可能会在某些批处理文件中发现SHIFT语句很有用。

SHIFT所做的是将命令行参数从右移到左。

(命令行参数是命令行中包含的用于执行批处理文件的那些参数。)这提供了一种方法,例如,使批处理文件接受可变数量的参数。

在内部,命令解释器为命令行的元素编号。例如,考虑以下命令,该命令执行名为DOIT.BAT的批处理文件:

doit first second third fourth fifth

在这种情况下,命令为“ doit”,后跟五个参数:第一,第二,第三,第四和第五。命令解释器在内部为这些参数%1到%5编号。但是,实际上,存在一个编号为%0的“参数”:命令(批处理文件名)本身。

要查看其工作原理,请创建自己的DOIT.BAT文件,其中包含以下命令:

@ECHO OFF CLS :TOP IF [%0]==[] GOTO :EOF ECHO %0 %1 %2 %3 %4 %5 SHIFT GOTO TOP

批处理文件首先关闭命令回显到屏幕,然后清除屏幕。然后,它设置了一个命令循环(从:TOP到文件末尾),该循环将屏幕上的命令行元素回显到屏幕上,然后(通过使用SHIFT命令)将所有元素向左移动。移位后,元素%0被丢弃,元素%1变为%0,元素%2变为%1,依此类推。运行批处理文件时,应该看到以下输出:

doit first second third fourth fifth first second third fourth fifth second third fourth fifth third fourth fifth fourth fifth fifth

在自己的批处理文件中使用SHIFT时,可以使用可变数量的参数调用该文件,然后在这些参数之间移动以进行处理。

本技巧(13198)适用于Windows 7、8和10。