Windows批处理CMD如何截取一个字符串中指定字符后面的字符串?

比如我setMyVarA=the.last.stand如何使得我能setMyVarB=【MyVarA中最后一个“点(.)”后面的字符串】本人初学CMD不久,还望高手在给出... 比如我
set MyVarA=the.last.stand
如何使得我能
set MyVarB=【MyVarA中最后一个“点(.)”后面的字符串】

本人初学CMD不久,还望高手在给出代码的时候能多添几处注释。
展开
 我来答
游戏放松小助手
高粉答主

2020-03-28 · 我是游戏小达人,乐于助人
游戏放松小助手
采纳数:32 获赞数:76887

向TA提问 私信TA
展开全部

1、首先打开cmd窗口,然后输入格式 :%PATH:str1=str2% 将字符串的变量%PATH%中的str1替换为str2。

2、在尝试将www.baidu.com中的.更改为。

3、字符串截取格式:%a:~[m[,n]]%  方括号表示可选,%为变量标识符,a为变量名,不可少,冒号用于分隔变量名和说明部分,符号~可以简单理解为“偏移”即可,m 为偏移量(缺省为0),n 为截取长度。

4、set var=%a:~-3%   这里就是就是把变量a 倒数 3 位的值赋予变量var。

5、最后字符串截取总结以a=www.baidu.com。

yyykkkyyyy
2017-01-07 · TA获得超过3136个赞
知道大有可为答主
回答量:2691
采纳率:40%
帮助的人:3293万
展开全部
1 如果是取最左的特定字符(串)之后的部分可用
set "MyVarB=%MyVarA:*.=%"
意思是变量MyVarA第一个.及之前部分替换为空
则MyVarB取得last.stand
当然继续以此方法总是可以取到最后部分
:get
if not "%MyVarB:.=%"=="%MyVarB%" set MyVarB=%MyVarB:*.=%&goto :get
2 对于取最后一个点后的部分,可以把它想象成一个带后缀的文件名
for %%i in ("%MyVarA%") do set "Vq=%%~xi"
set "MyVarB=%Vq:.=%"
注: set 命令后的引号不是必要的%%~xi 表示取后缀名 for命令中的双%%符如在命令行需改为单%
因后缀名是带.的,再把点替换为空(或去掉第一字符set "MyVarB=%Vq:~1%")
3 for命令是循环命令语法比较复杂比如还可以:
for %%i in ("%MyVarA:.=","%") do set "MyVarB=%%~i"
将原串每个.换成"," 且首尾都加上引号,这样形成 "the","last","stand"的字符串
会以逗号为分隔符,循环执行do后的赋值命令,虽然执行了3次但最后一次是最终的赋值情况
还可有其它方法,建议先把如set这样的简单命令熟悉了再去研究for这样的复杂命令
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式