shift 命令

shift 命令用于更改批处理文件处理参数的方式,如指定起始处理参数的位置等。先使用 shift /? 看看帮助信息:

C:\Users\Administrator\Desktop>shift /?
更改批处理文件中可替换参数的位置。

SHIFT [/n]

如果命令扩展被启用,SHIFT 命令支持/n 命令行开关;该命令行开关告诉
命令从第 n 个参数开始移位;n 介于零和八之间。例如:

    SHIFT /2

会将 %3 移位到 %2,将 %4 移位到 %3,等等;并且不影响 %0 和 %1。

实例1:利用 shift 命令动态输出批处理执行时输入的所有参数。

@echo off
:round
if "%1"=="" goto cmd1
echo 参数:%1
shift
goto round

:cmd1
echo 没有获取到参数,结束脚本
goto end
:end

输出结果:

C:\Users\Administrator\Desktop>test.bat arg1 arg2 arg3
参数:arg1
参数:arg2
参数:arg3
没有获取到参数,结束脚本

实例2:使用 shift /n 的方式重新设置处理参数的起止位置。

@echo off
echo 参数1:%1
echo 参数2:%2

输出结果:

C:\Users\Administrator\Desktop>test.bat arg1 arg2 arg3
参数1:arg1
参数2:arg2

运行上面实例时,我们传递了3个参数,分别是:arg1 arg2 arg3

如果我们在执行 echo 之前添加 “shift /2” 命令,cmd.exe 将把传递参数的起始位置设置为2,即 %3 移动 %2。代码如下:

@echo off
shift /2
echo 参数1:%1
echo 参数2:%2

输出结果:

C:\Users\Administrator\Desktop>test.bat arg1 arg2 arg3
参数1:arg1
参数2:arg3

实例3:使用 shift命令和批处理子程序实现累加功能。

@echo off
set sum=0
rem 调用子程序
call :sub sum 1 2 3 4
echo sum=%sum%
pause
rem 定义一个子程序
:sub
set /a %1=%1+%2
shift /2
if not "%2"=="" goto sub
goto :eof

输出结果:

C:\Users\Administrator\Desktop>test.bat
sum=10
请按任意键继续. . .
说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号