思考题:求2的n次方 参考答案: @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 这样应该明白了吧~ 其他两种语法 %PATH:~-10% %PATH:~0,-2% 他们也是显示指定变量指定几位的值的意思 %PATH:~-10% 看例子 截取功能例子2: @echo off set a=bbs.verybat.cn set var=%a:~-3% echo %var% pause 运行结果:.cn 这个就是把变量a倒数3位的值给变量VAR 当然我们也可以改成这样 截取功能例子3: @echo off set a=bbs.verybat.cn set var=%a:~3% echo %var% pause 运行显示:.verybat.cn 这个就是把变量a的从第3位开始后面全部的值给变量VAR %PATH:~0,-2%例子 截取功能例子4: @echo off set a=bbs.verybat.cn set var=%a:~0,-3% echo %var% pause 执行后,我们发现显示的是\"bbs.verybat\",少了\".cn\" 从结果分析,很容易分析出,这是把变量a的值从0位开始, 到倒数第三位之间的值全部赋予给var 如果改成这样 截取功能例子5: @echo off set a=bbs.wuyou.com set var=%a:~2,-3% echo %var% pause 运行显示:s.wuyou. 那么他就是显示从第3位(偏移量2)开始减去倒数三位字符的值,并赋予给变量var 讲得好,例子就 |