shift

更改批处理参数在批处理文件中的位置。

语法

shift [/n <N>]

参数

参数 说明
/n <N> 指定从第 N 个参数开始移动,其中 N 是从 0 到 8 的任何值。 需要默认启用的命令扩展。
/? 在命令提示符下显示帮助。

注解

  • shift 命令通过将每个参数复制到上一个参数中来更改批处理参数 %0 到 %9 的值,即 -%1 的值复制到 %0,%2 的值复制到 %1,依此类推。 这对于编写对任意数量的参数执行相同操作的批处理文件很有用。

  • 如果启用了命令扩展,则 shift 命令支持 /n 命令行选项。 /n 选项指定开始在第 N 个参数处移动,其中 N 是 0 到 8 的任何值。 例如,SHIFT /2 会将 %3 移动到 %2,将 %4 移动到 %3,依此推移,而 %0 和 %1 不受影响。 默认情况下将启用命令扩展。

  • 可以使用 shift 命令创建可接受 10 个以上批处理参数的批处理文件。 如果在命令行上指定了 10 个以上的参数,则第 10 个 (%9) 之后出现的参数将一次移动一个到 %9。

  • shift 命令对 %* 批处理参数没有影响。

  • 没有逆向 shift 命令。 实现 shift 命令后,无法恢复在移动之前就存在的批处理参数 (%0)

示例

若要使用名为 Mycopy.bat 的批处理文件将文件列表复制到特定目录,请键入:

@echo off
rem MYCOPY.BAT copies any number of files
rem to a directory.
rem The command uses the following syntax:
rem mycopy dir file1 file2 ...
set todir=%1
:getfile
shift
if "%1"=="" goto end
copy %1 %todir%
goto getfile
:end
set todir=
echo All done