从结果分析,很容易分析出,这是把变量a的值从0位开始,
到倒数第三位之间的值全部赋予给var
如果改成这样
截取功能例子5:
| @echo off set a=bbs.verybat.cn set var=%a:~2,-3% echo %var% pause |
运行显示:s.verybat
那么他就是显示从第3位(偏移量2)开始减去倒数三位字符的值,并赋予给变量var
讲得好,例子就是说明问题,为便于记忆,龙卷风小节如下:
a=bbs.verybat.cn
%a:~1,2% =“bs” 偏移量1,从第二位开始向右取2位
%a:~-3% =“.cn” 偏移量负3,即倒数3位(也可理解为留下右边3位),右取全部
%a:~3% =“.verybat.cn” 偏移量3(也可理解为去掉左边3位),右取全部
%a:~0,-3% =“bbs.verybat” 偏移量0,右取长度至负3,即倒数3位
%a:~2,-3% =“s.verybat” 偏移量2,右取长度至负3,即倒数3位
**********************************************
所以,截取功能统一语法格式为:%a:~[m[,n]]%
**********************************************
方括号表示可选,%a%为变量名,不可少,冒号用于分隔变量名和说明部分,符号~可以简单理解为“偏移”即可,m为偏移量(缺省为0),n为截取长度(缺省为全部)
上面所述用法其实相当于vbs函数mid、left、right
%a:~0,n% 相当于函数left(a,n) 取左边n位
%a:~-m% 相当于函数right(a,m) 取右边m位
%a:~m,n% 相当于函数mid(a,m+1,n) 从m+1位开始取n位
%a:~m,-n% 相当于函数mid(a,m+1,len(a)-m-n),从m+1位开始,至倒数n+1位
%a:~m % 相当于函数mid(a,m+1,len(a)-m) 或者right(a,len(a)-m),从m+1位开始取右边全部。
思考题目:输入任意字符串,求字符串的长度
参考答案:
| @echo off set /p str=请输入任意长度的字符串: echo 你输入了字符串:"%str%" call :stringlenth "%str%" num echo 字符串长度为:%num% pause exit :StringLenth ::---------字符串长度计算子程序 ::---------参数%1为字符串(如有空格,请用引号括起来) ::---------参数%2为返回变量名称,不能含空格或特殊字符 ::@echo off set theString=%~1 if not defined theString goto :eof set Return=0 :StringLenth_continue set /a Return+=1 set thestring=%thestring:~0,-1% if defined thestring goto StringLenth_continue if not "%2"=="" set %2=%Return% goto :eof |
如果想了解更多关于set命令的方法可以参考下面的方法。









