BAT教程 :第五节(set命令详解)

先回顾一下他设置自定义变量的用法
例子:
@echo off
setvar=我是值
echo%var%
pause
请看setvar=我是值,
set是命令   var是变量名  =号右边的"我是值"是变量的值
在批处理中我们要引用这个变就把var变量名用两个%(百分号)扩起来,%var%
这种SET语法只能直接在BAT代码的提前赋予变量的值,有时候我们需要提供一个交互界面,
用户自己输入变量的值,然后我们在来根据这个值来做相应操作,现在我就来说说这SET的这
种语法,只需要加一个"/P"
例子:
@echo off
set/p var=请输入变量的值:
if%var%==1 echo 您输入了 1~_~
pause
set/p 是命令语法  var是变量名   =号右边的"请输入变量的值: ",这个是提示语,不是变

运行后,我们在提示语后面直接输入1,就会显示一行您输入了 1~_~,输入别的就没有任何反

好了,先回顾到这,现在讲SET其他功能
使用set/?查看SET的帮助我们发现SET除了我上面讲的
SET[variable=[string]]
SET/P variable=[promptString]
这两种语法外,还有如下几种语法:
SET/A expression
环境变量替换已如下增强:
%PATH:str1=str2%
%PATH:~10,5%
%PATH:~-10%
%PATH:~0,-2%
这机种语法有什么用处呢?
SET/A expression  
/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式
评估器很简单并以递减的优先权顺序支持下列操作:
    ()                  -分组
    !~-               -一元运算符
    */%               -算数运算符
    +-                 -算数运算符
    <<>>               -逻辑移位
    &                  -按位“与”
    ^                  -按位“异”
    |                  -按位“或”
    =*=/=%=+=-=   -赋值
      &=^=|=<<=>>=
    ,                  -表达式分隔符
上面这些是系统帮助里的内容,看着是不是有点晕,没关系我来简单解释一下:
set的/
现在开始举例子介绍这些数学符号的用法:
看例子 这里的例子请直接在CMD下拷贝命令运行,
set/a var=1+1  
set/a 语法,var变量名 1+1 数学式子
拷贝运行后会直接显示一个2,或者运行完后我们输入echo%var%,也是二,这就是

set/a var=2-1  结果是多少呢?如果你看不到结果就echo%var%.....
set/a var=2*2 乘法运算
set/a var=2/2 除法运算
set/a var=(1+1)+(1+1)结果等于4
set/a a=1+1,b=2+1,c=3+1  运行后会显示一个4,但我们用
echo%a%%b%%c%后看结果,会发现其他数学运算也有效果!,这就是"斗"号的

有时候我们需要直接在原变量进行加减操作就可以用这种语法
set/a var+=1  这样的语法对应原始语法就是set/a var=%var%+1
都是一样的结果,在原变量的值上在进行数学运算,不过这样写简单一点
在来一个:  
set/a var*=2
其他都这么用,
另外还有一些用逻辑或取余操作符,这些符号,按照上面的使用方法会报错的
比如我们在CMD里输入set/a var=1&1"与运算",他并不会显示为1,而是报错,
为什么?对于这样的"逻辑或取余操作符",我们需要把他们用双引号引起来,看例子
set/a var=1"&"1 这样结果就显示出来了,其他逻辑或取余操作符用法
set/a var=1"+"1 异运算
set/a var=1"%"1  取模运算
set/a var=2"<<"2 次方运算
set/a var=4">>"2 这个不太记得数学里的叫法....
还有几个数学不太行,搞不清楚了....不列出来了,
这些符号也可以用&=^=|=&lt;&lt;=&gt;&gt;=这样的简单用法如
set/a var"&="1 等于set/a var=%var%"&"1 注意引号
好符号说到这,现在说%PATH:str1=str2%
这个是替换变量值的内容,看例子
@echo off
seta=bbs.verybat.cn
echo 替换前的值:"%a%"
setvar=%a:=%
echo 替换后的值:"%var%"
pause
对比一下,我们发现他把变量%a%的空格给替换掉了,从这个例子,我们就可以发现
%PATH:str1=str2%这个操作就是把变量%PATH%的里的str1全部用str2替换
比如我们把上面的例子改成这样
@echo off
seta=bbs.verybat.cn
echo 替换前的值:"%a%"
setvar=%a:.=伤脑筋%
echo 替换后的值:"%var%"
pause
解释set var=%a:.=伤脑筋%
    set命令 var变量名 字a是要进行字符替换的变量的值,"."为要替换的值,
"伤脑筋"
执行后就会把变量%a%里面的"."全部替换为"伤脑筋"
这就是set的替换字符的很好的功能!先讲到这
%PATH:~10,5%  这个什么意思,看例子:
@echo off
seta=bbs.verybat.cn
setvar=%a:~1,2%
echo%var%
pause
执行后,我们会发现只显示了"bs"两个字母,我们的变量%a%的值不是为bbs.verybat.cn吗
怎么只显示了第2个字母和第3个字母"bs",分析一结果我们就可以很容易看出
%PATH:~10,5%
分析set var=%a:~1,2%
  set命令 var变量值  a要进行字符操作的变量"1"从变量"a"第几位开始显示"2"显示几位
和起来就是把变量a的值从第一位开始,把后两位赋予给变量var
就样因该明白了吧~
其他两种语法
%PATH:~-10%
%PATH:~0,-2%
他们也是显示指定变量指定几位的值得的意思
%PATH:~-10%例子
@echo off
seta=bbs.verybat.cn
setvar=%a:~-3%
echo%var%
pause
这个就是把变量a倒数3位的值给变量VAR
当然我们也可以改成这样
@echo off
seta=bbs.verybat.cn
setvar=%a:~3%
echo%var%
pause
这个就是把变量a的从第3位开始后面全部的值给变量VAR
%PATH:~0,-2%  例子
@echo off
seta=bbs.verybat.cn
setvar=%a:~0,-3%
echo%var%
pause
执行后,我们发现显示的是"bbs.verybat",少了".cn"
从结果分析,很容易分析出,这是把变量a的值从0位开始,
到倒数第三位之间的值全部赋予给var
如果改成这样
@echo off
seta=bbs.verybat.cn
setvar=%a:~2,-3%
echo%var%
pause
那么他就是显示从第2位开始减去倒数三位字符的值,并赋予给变量var
好了set的一些用法,就介绍到这了,希望对各位有所帮助,时间不早睡觉Zz....

转载于:https://www.cnblogs.com/lzjsky/archive/2010/11/18/1880978.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410816.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rip c语言,GNU C 对标准C语言的扩展

特殊属性声明GNU C 允许声明函数、变量和类型的特殊属性&#xff0c;以便进行手工的代码优化和定制。如果要指定一个属性声明&#xff0c;只需要在声明后添加__ attribute __((ATTRIBUTE))。其中ATTRIBUTE为属性说明&#xff0c;如果存在多个属性&#xff0c;则以逗号分隔。GNU…

python学习格式化输出(一)

name input(请输入你的姓名&#xff1a;) age input(请输入你的年龄&#xff1a;) job input(你的职业是&#xff1a;) msg -------------info %s------------ 我的名字叫&#xff1a;%s 我的年龄&#xff1a;%s 我的职业是&#xff1a;%s ------------end-------------- %…

Ubuntu linux上Nautilus安装RabbitVCS扩展

安装包 $ sudo add-apt-repository ppa:rabbitvcs $ sudo aptitude update $ sudo apt-get install rabbitvcs-core rabbitvcs-nautilus 重新启动nautilus $ nautilus -q 转载于:https://www.cnblogs.com/wdpp/archive/2010/11/22/2386291.html

bat与C语言混合编程,BAT与HTML混合编程的方法

:οnkeypresswindow.close()>colorgreen>HTMLCodes我一直是菜菜。就楼主这个帖来说&#xff0c;其思想就是把VBS混合编程的思想用到html语言上&#xff0c;随便举个混合编程的例子&#xff0c;来表达(我就懂点点VBS)楼主此贴的思想&#xff1a; 2>nul 3>nul&ec…

小数转换成二进制c语言,只写出了十进制小数转换成二进制的,求二进制小数转十进制的...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #include #define NUM 2#define ZERO 0.000001int PrnMainMenu(void);void ProcessLoop(void);void two(void);void ten(void);int a,b[10],i0,c0;void integer(int n) //定义整数部分{if(n>0){integer(n/NUM…

SAS 读取数据文件

每次读取数据时需要告诉SAS3件事&#xff1a;1&#xff1a;数据存在哪里&#xff1f;2&#xff1a;数据的形式3&#xff1a;创建的数据集的类型&#xff08;永久/临时&#xff09; 1 读取SAS数据集 DATA temp; /*temp 为创建的数据集名称*/ INFILE C\mysas\data\temp.dat; /*数…

C++ 数制转换

一、十进制 转换成 n 进制 这里要求 1< n < 9 转换函数实现如下 //将十进制 dec 转换成 n 进制&#xff0c;结果存在 other中&#xff0c;other在外部分配内存 void Decimal_to_Other(int dec, char *other, int n) { //1 < n < 9 int i0; int dec_copy dec; char…

计算机二级C语言考的函数,【帮考网】2012计算机等级二级考试C语言:函数递归...

一、栈在说函数递归的时候&#xff0c;顺便说一下栈的概念。栈是一个后进先出的压入(push)和弹出(pop)式数据结构。在程序运行时&#xff0c;系统每次向栈中压入一个对象&#xff0c;然后栈指针向下移动一个位置。当系统从栈中弹出一个对象时&#xff0c;最近进栈的对象将被弹出…

自我总结篇之vue的组件通信(父传子 子传父 非父子)

一&#xff1a;父传子 父组件代码如下&#xff1a; <template><div class"father"><child :messagemessage :message2message2></child> </div> </template> <script> import child from /components/child.vue export de…

Window Server 2008中开启Window Media Player功能

Window Server 2008中开启Window Media Player功能 服务器管理器 功能 优质Windows音频视频体验 打勾 安装 其它功能有&#xff1a; 桌面休验 等.... the end! 转载于:https://www.cnblogs.com/sqlite3/archive/2010/12/02/2566887.html

c语言数据结构kmp中next计算,数据结构——关于KMP算法中next函数的详细解析

以前看到数据结构中字符串的模式匹配时&#xff0c;花了半天的时间&#xff0c;才把KMP算法中的next函数整明白了&#xff0c;结果过了几天在看到这时&#xff0c;只记得next[j1]next[j]1&#xff0c;但是有时候能套公式正确算出&#xff0c;有时候就算不对&#xff0c;因此今天…

浅谈“微服务”

微服务概述 1.1 易于扩展 1.2 部署简单 1.3 技术异构性 数据库的服务化切分 2.1 什么是“分库分表”&#xff1f; 2.2 数据库扩展的几种方式 2.3 分库分表的几种方式 2.4 引入分库分表中间件后面临的问题 2.5 现有分库分表中间件的横向对比 微服务架构中的分布式事务 3.1 什么…

liigo:爱可视70平板电脑使用感受,遗憾与满足并存

我想大部分人来这里&#xff0c;不是想听美言的。许多资料、宣传性文章、评测、视频等等&#xff0c;网络上已经有很多了&#xff08;其中外文占很大比例&#xff09;。 我想大部分人来这里&#xff0c;是想听真正的使用感受的。我想&#xff0c;我这里提到的许多内容&#xff…

c语言 拓补排序源代码,拓扑排序C语言代码

#include#include#include#include//----------------公共的-----------------#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2//---------------------------------------//*************栈的初始大小和增量*************…

visual studio 正则表达式 查找与替换文本

好多时候想要重构一些代码&#xff0c;但是修改起来发现很麻烦&#xff0c;因为简单的文本替换不能满足需求&#xff0c;这时候就要借助ide的力量了。还好visual studio 2010支持正则表达式查找和替换。如下图所示&#xff1a; document.all.domElementA.style.visibility hid…

51 Python - 装饰器 参数化装饰器——装饰器更通用

05参数化装饰器——装饰器更通用 参数化装饰器如何理解&#xff0c;简单理解就是让装饰器可以通用。场景举例&#xff0c;现在有个需求要改某一段文字&#xff0c;既要加<P>标签&#xff0c;又要加<B>&#xff0c;还有加<Div>。是不是意味着需要定义多个装饰…

手机android怎么开机画面,Android使用BroadcastReceiver实现手机开机之后显示画面的功能...

本文实例讲述了Android使用BroadcastReceiver实现手机开机之后显示画面的功能。分享给大家供大家参考&#xff0c;具体如下&#xff1a;在此例中介绍了怎样使用BroadcastRececiver。使用BroadcastReceiver需要继承这个类&#xff0c;并且重写public void onReceiver(Context co…

[html] HTML采用的是RGB颜色还是CMYK颜色?为什么?

[html] HTML采用的是RGB颜色还是CMYK颜色&#xff1f;为什么&#xff1f; 用在电脑或者手机上显示的大部分都是RGB&#xff0c;用于需要印刷的都用CMYK 并且不同的显示器色域不同会导致色差&#xff0c;不同浏览器也有自己的调色板&#xff0c;后面总结出来过一套web安全色&am…

Registered Nurse in the US

注册护士移民美国的条件美国护士RN考试介绍美国注册护士考试复习美国各州注册护士考试要求CGFNSRegistered nurseTop Paid Registered Nurses 转载于:https://www.cnblogs.com/sbxlm/p/3655784.html

安卓突然自动关机 android正在启动,华为手机开机重启后老是显示安卓正在启动优化应用是为什么?...

建议进入Recovery模式执行双清wipe操作。Recovery模式指的是一种可以对安卓机内部的数据或系统进行修改的模式(类似于windowsPE或DOS)。在这个模式下可以刷入新的安卓系统&#xff0c;或者对已有的系统进行备份或升级&#xff0c;也可以在此恢复出厂设置。进入recovery的方法&a…