如何在Windows批处理文件中按分隔符获取字符串最后一个令牌?
Windows批处理提取字符串最后斜杠后的内容
针对你需要从remotes/origin/rc_1.1.1中提取最后一段rc_1.1.1的需求,这里提供两种实用的批处理实现方式:
方式一:针对固定前缀的快速替换
如果确定字符串前缀固定为remotes/origin/,可以直接用变量替换快速得到结果:
@echo off set "full_branch=remotes/origin/rc_1.1.1" :: 替换掉第一个"origin/"之前的所有内容 set "branch_name=%full_branch:*origin/=%" echo 分支名:%branch_name% pause
方式二:通用提取(适配任意数量斜杠)
如果字符串的斜杠数量不确定,需要通用提取最后一段内容,可以用循环迭代的方式:
@echo off set "full_branch=remotes/origin/rc_1.1.1" set "temp_str=%full_branch%" :: 循环去掉所有斜杠及之前的内容,直到只剩最后一段 :extract_loop if not "%temp_str:*/=%"=="%temp_str%" ( set "temp_str=%temp_str:*/=%" goto extract_loop ) set "branch_name=%temp_str%" echo 分支名:%branch_name% pause
说明
- 第一种方式利用批处理的变量通配替换规则:
%变量:*关键词=%"表示将变量中第一个关键词及之前的所有内容替换为空。 - 第二种方式通过循环不断移除最左侧的斜杠及前面的内容,直到字符串中没有斜杠为止,剩下的就是最后一段内容。
内容的提问来源于stack exchange,提问作者SkyWalker
相关产品推荐
相关产品推荐

