Windows批处理CMD如何截取一个字符串中指定字符后面的字符串?
比如我setMyVarA=the.last.stand如何使得我能setMyVarB=【MyVarA中最后一个“点(.)”后面的字符串】本人初学CMD不久,还望高手在给出...
比如我
set MyVarA=the.last.stand
如何使得我能
set MyVarB=【MyVarA中最后一个“点(.)”后面的字符串】
本人初学CMD不久,还望高手在给出代码的时候能多添几处注释。 展开
set MyVarA=the.last.stand
如何使得我能
set MyVarB=【MyVarA中最后一个“点(.)”后面的字符串】
本人初学CMD不久,还望高手在给出代码的时候能多添几处注释。 展开
2个回答
展开全部
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这样的复杂命令
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这样的复杂命令
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询