ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

批处理shift运算符

2022-04-05 21:31:54  阅读:217  来源: 互联网

标签:空格 批处理 shift echo 运算符 命令 参数 命令行 SHIFT


命令行参数的一个限制是它只能接受直到%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
Shell

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

通过使用SHIFT运算符可以避免此限制。 在批处理文件处理完第一个参数之后,可以将它们SHIFT(只是用SHIFT命令插入一行),结果是%1得到值b%2得到值c,等等,直到%9, 现在得到值j。继续这个过程,直到至少%9为空。

我们来看一个如何使用SHIFT运算符来克服命令行参数限制的例子。

示例

@ECHO OFF
:Loop

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

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

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

如下输出结果 -

a 
b
c
d
e
f
h
i
j
Shell

注意
命令行中的某些字符被批处理文件忽略,具体取决于DOS版本,它们是否被“转义”,通常取决于它们在命令行中的位置 -

  • 逗号(,)被替换为空格,除非它们是双引号中的字符串的一部分。
  • 分号(;)被替换为空格,除非它们是双引号中的字符串的一部分。
  • =字符有时被空格替换,而不是在双引号中是字符串的一部分。
  • 第一个正斜杠(/)只有紧跟在命令之后,才会被一个空格替换,而没有前导空格。
  • 多个空格被替换为一个空格,除非它们是双引号中的字符串的一部分。
  • 选项卡由一个空格替换。
  • 第一个命令行参数之前的空格将被忽略。
  • 最后一个命令行参数后面的空格将被修剪。

 

出处:https://www.yiibai.com/batch_script/batch_script_using_shift_operator.html

=======================================================================================

批处理命令学习笔记——Shift命令

Shift 命令

更改批处理文件中可替换参数的位置。

语法:

Shift [/n]

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

通过shift命令,可以让命令行上的命令使用超过9个(%1~%9,%0是批处理命令本身)以上的可替代参数。

示例:

ECHO OFF
ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9
SHIFT
ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9
SHIFT
ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9

执行结果如下:

C:\> SHIFT.BAT 1 2 3 4 5 6 7 8 9 10 11
1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9 10
3 4 5 6 7 8 9 10 11

带参数的SHIFT命令执行示例如下:

Shift /2

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

事实上,处理命令行上9个以上的参数,亦可以使用for命令组合%*来完成。

示例:

for %%a in (%*) do echo %%a

 

出处:https://blog.csdn.net/qq_33336155/article/details/53516990

标签:空格,批处理,shift,echo,运算符,命令,参数,命令行,SHIFT
来源: https://www.cnblogs.com/mq0036/p/16103984.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有