-------siwuxie095

shift

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

语法: SHIFT [/n]

如果命令扩展被启用,SHIFT 命令支持 /n 命令行开关;该命令行开关告诉

命令从第 n 个参数开始移位;n 介于零和八之间。例如:

SHIFT /2

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

如:1 - 9 数据求和

@echo off

title 数据求和

call :sub sum 1 2 3 4 5 6 7 8 9

echo.

echo
数据求和结果:%sum%

pause>nul

:sub

set /a %1=%1+%2

if not
"%2"=="" goto sub

sublime中:

运行一览:

这里面:%0 - %9 依次表示:

显然:%0 代表自身,具体到这里就是 :sub,而 %1 代表的 sum 这里的初值实际上是 0

shift /2 即将 %3 移位到 %2,%4 移位到 %3 …

注意:

1、子程序的参数
%1 - %9 不能直接在主程序中直接使用

如:echo 数据求和结果:%sum%

改为
echo 数据求和结果:%1

将没有任何显示

2、子程序中运算到最后,%2 - %9 都将变为空值,而 %1 即sum,变为45,即最后的结果。但此时如果在子程序中 echo %1 来看结果,显示出来的却是 sum,即是变量名,而不是变量值。同时批处理不允许 %%1% 的格式,即想要利用 %1 是无法显示出数值的,必须用 %sum% 的格式

3、set 命令不允许 set /a %1=%2+%3 这种将数值直接赋值到参数的运算(即从主程序到子程序),也不允许 set /a 3=4+5 这种将数值赋值到数值的运算。如果一定要使用 set /a %1=%2+%3 这种形式的运算,就要一开始就将变量赋值给 %1,如本例的sum(但很显然这样做,计算是错的)

如果在子程序中加入:echo %2 或 echo %3 或 echo %9

(1)

@echo off

title 数据求和

call :sub sum 1 2 3 4 5 6 7 8 9

echo.

echo
数据求和结果:%sum%

pause>nul

:sub

echo
%2

set /a %1=%1+%2

if not
"%2"=="" goto sub

运行一览:

(2)

@echo off

title 数据求和

call :sub sum 1 2 3 4 5 6 7 8 9

echo.

echo
数据求和结果:%sum%

pause>nul

:sub

echo
%3

set /a %1=%1+%2

if not
"%2"=="" goto sub

运行一览:

(3)

@echo off

title 数据求和

call :sub sum 1 2 3 4 5 6 7 8 9

echo.

echo
数据求和结果:%sum%

pause>nul

:sub

echo
%9

set /a %1=%1+%2

if not
"%2"=="" goto sub

运行一览:

再如:

在桌面新建一个test文件夹,内有test.bat a.txt b.txt c.txt

test.bat:

@echo off

:loop

if
"%1"=="" goto :end

echo %1的文本内容:

type %1

echo.

echo.

shift

goto :loop

:end

echo 没有获取到参数,结束脚本

a.txt(b.txt 和 c.txt 同):

运行一览:

对于:test.bat a.txt b.txt c.txt

%0

%1

%2

%3

test.bat

a.txt

b.txt

c.txt

批处理首先判断第一个参数
%1 是否为空,不为空,显示相应文本内容,执行到 shift 命令时,自动将 %1 移位到 %0,%2 移位到 %1,%3 移位 %2 (这里 shift 替换成 shift /0 或 shift /1 都可以,只要能移位到 %1都可,因为这是对 %1 进行判断,如果替换成 shift /2,则会无限循环 a.txt 的内容,如下图)

【made by siwuxie095】

shift的更多相关文章

  1. shift粘滞键后门创建/复原批处理

    创建shift粘滞键后门: 1 c: 2 3 cd \Windows\System32\ 4 5 rename sethc.exe bak_sethc.exe 6 7 xcopy cmd.exe se ...

  2. Javascript——arguments的shift问题谈方法“借用”

    今天本来运行了打算这样的方法 arguments.shift() (shift方法是删除数组的第一个元素,例如var arr=[1,2,3,4,5]执行var a=arr.shift();之后,a的值 ...

  3. js中push(),pop(),unshift(),shift()的用法小结

    1.push().pop()和unshift().shift() 这两组同为对数组的操作,并且会改变数组的本身的长度及内容. 不同的是 push().pop() 是从数组的尾部进行增减,unshift ...

  4. eclipse通过ctrl+shift+t无法找到源文件类的解决方法

    通过ctrl + shift + t找对应的类时,类明明存在,并且也在编译路径下,但就是查找不到,一个可能的原因就是eclipse为类建立的索引出了问题. 解决的方法是:找到项目所在工作空间下的.me ...

  5. Javascript的shift()和push(),unshift()和pop()方法简介

    栈方法: Javascript为数组专门提供了push()和pop()方法,以便实现类似栈的行为.来看下面的例子: var colors=new Array();       //创建一个数组 var ...

  6. JS数组操作示意图(shift,unshift,pop,push)

    shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a:[2,3,4,5] b: ...

  7. Bash:-:-通过while和shift判断脚本位置参数格式是否合法

    ]];then echo "请输入2个位置参数..." exit else num=$# ));do case ${num} in ) if ! echo "${1}&q ...

  8. Bash:-set设置位置变量结合while和shift使用

    #!/bin/bash aaa=( ) bbb=(a b c d) set -- ${aaa[@]} ));do } shift done set -- echo "------------ ...

  9. 小tip:关于typeof,instanceof,toString(),valueOf(),toLocaleString(),join(),reverse(),sort(),pop(),push(),shift(),unshift()

    typeof:用于检测一个变量是否是基本数据类型.instanceof用于检测某引用对象是什么类型的对象. var s = "Nicho"; var b = true; var n ...

  10. Shift的用法

    Shell编程中Shift的用法     位置参数可以用shift命令左移.比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1.$2.$3丢弃,$0不移动.不带参数的 ...

随机推荐

  1. install cx_Oracle on Linux

    step 1 : install oracle client library url: http://www.oracle.com/technetwork/topics/linuxsoft-08280 ...

  2. ajax传递数组到后台

    //实体类 public class Person { private int ID{get;set;} private string Name{get;set;} private int Age{g ...

  3. linux VI search command 搜索 加入行号

    VI COMMAND:set number :set nonumber VI COMMAND/keywork   //search

  4. C#实现Dll(OCX)控件自动注册的两种方法 网上找的 然后 自己试了试 还是可以用的

    尽管MS为我们提供了丰富的.net framework库,我们的程序C#开发带来了极大的便利,但是有时候,一些特定功能的控件库还是需要由第三方提供或是自己编写.当需要用到Dll引用的时候,我们通常会通 ...

  5. 使用spring通知时,代理出错

    动态代理是基于接口的,spring配置是基于类的!!!!!!!!!! 注意:JDK的动态代理,只能对实现接口的类实现代理,生成代理对象,如果这个类没有实现接口,是生成不了代理对象的.如本例UserMa ...

  6. webApi 导入Excel

    /// <summary> /// 导入 /// </summary> /// <param name="organizationId">< ...

  7. Hive集成HBase;安装pig

    Hive集成HBase 配置 将hive的lib/中的HBase.jar包用实际安装的Hbase的jar包替换掉 cd /opt/hive/lib/ ls hbase-0.94.2*  rm -rf ...

  8. 从append追加的<tr>里传ID参数给js函数

    今天这个小问题几乎把我整崩溃 $.each(data.list, function (index, item) { i++; shenhe = "待审核"; tixing = it ...

  9. Vim配置(k-vim)

    无意发现一个vim的插件 转载:http://www.cnblogs.com/yxy2829/p/5250587.html 截图 solarized主题 molokai主题 安装步骤 1. clone ...

  10. py-faster-rcnn(running the demo): ubuntu14.04+caffe+cuda7.5+cudnn5.1.3+python2.7环境搭建记录

    第一次写博客,以此纪念这几天安装caffe,跑faster-rcnn的血泪史.在此特别感谢网络各路大神,来自全球各地,让我能从中汲取营养,吸取经验,总结规律. faster-rcnn分为matlab版 ...