@echo off
set /p n=请输入2的几次方:
set /a num=1^<^<n
echo %num%
pause
运行结果:
请输入2的几次方: 3
8
请按任意键继续. . .
请输入2的几次方: 10
1024
请按任意键继续. . .
请输入2的几次方: 15
32768
请按任意键继续. . .
三、用set命令进行字符串处理
1、字符串替换
好了,符号说到这,现在说%PATH:str1=str2%
上面语法的意思就是:将字符串变量%PATH%中的str1替换为str2
这个是替换变量值的内容,看例子
@echo off
set a= bbs. verybat. cn
echo 替换前的值: "%a%"
set var=%a: =%
echo 替换后的值: "%var%"
pause
运行显示:(龙卷风添加)
替换前的值: " bbs. verybat. cn"
替换后的值: "bbs.verybat.cn"
对比一下,我们发现他把变量%a%的空格给替换掉了,从这个例子,我们就可以发现
%PATH:str1=str2%这个操作就是把变量%PATH%的里的str1全部用str2替换
比如我们把上面的例子改成这样
@echo off
set a=bbs.verybat.cn
echo 替换前的值: "%a%"
set var=%a:.=伤脑筋%
echo 替换后的值: "%var%"
pause
运行显示:
替换前的值: "bbs.verybat.cn"
替换后的值: "bbs伤脑筋verybat伤脑筋cn"
解释set var=%a:.=伤脑筋%
set是命令 var是变量名 字a是要进行字符替换的变量的值,"."为要替换的值,
"伤脑筋"为替换后的值!
执行后就会把变量%a%里面的"."全部替换为"伤脑筋"
这就是set的替换字符的很好的功能! 替换功能先讲到这,下面将字符串截取功能
请注意:字符串的替换和截取功能在引用变量的地方均可以,并不一定必须要有set命令
例:
@echo off
set a=bbs.verybat.cn
echo 替换前的值: "%a%"
echo 替换后的值: "%a:.=伤脑筋%"
pause
此例在echo语句中就替换了字符串,效果一样。
2、字符串截取
**********************************************
截取功能统一语法格式为:%a:~[m[,n]]%
**********************************************
方括号表示可选,%为变量标识符,a为变量名,不可少,冒号用于分隔变量名和说明部分,符号~可以简单理解为“偏移”即可,m为偏移量(缺省为0),n为截取长度(缺省为全部)
%PATH:~10,5%这个什么意思,看例子:
截取功能例子1:
@echo off
set a=bbs.verybat.cn
set var=%a:~1,2%
echo %var%
pause
执行后,我们会发现只显示了"bs"两个字母,我们的变量%a%的值不是为bbs.verybat.cn吗?
怎么只显示了第2个字母和第3个字母"bs",分析一结果我们就可以很容易看出
%PATH:~10,5%就是显示变量PATH里从11位(偏移量10)开始的5个字符!
分析set var=%a:~1,2%
set是命令,var是变量值,a要进行字符操作的变量,"1"从变量"a"第几位开始显示,"2"表示显示几位。
合起来就是把变量a的值从第2位(偏移量1)开始,把2个字符赋予给变量var









