bat脚本:查找子字符串的位置以及bat脚本的字符串替换

Posted 蚂蚁小兵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bat脚本:查找子字符串的位置以及bat脚本的字符串替换相关的知识,希望对你有一定的参考价值。

问题背景:

str1= BMW_SW4.0_RC1 (这个str1是不定的,BMW也有可能是AUDI等)
str2=CANoe\\Flash\\OEM\\Files (这个路径是固定的)
需要实现的是:必须是Bat脚本, 将str2中的OEM用BMW去替换。即str2=CANoe\\Flash\\BMW\\Files

需要解决的问题:
1,怎么根据 短横线(_)去提取具体OEM的名称 (bat脚本的子字符串的位置,以及bat脚本的字符串截取)
2,怎么将提取到的OEM的名称,替换掉str2的OEM (bat 脚本的字符串替换)
参考资料:
bat字符串截取

将以下脚本拷贝到test.bat 文件中,拖到cmd中直接执行即可

@echo off
Setlocal ENABLEDELAYEDEXPANSION
::启用命令扩展,参加setlocal /?命令
set str1=BMW_SW4.0_RC1
set str2=CANoe\\Flash\\OEM\\Files
set ch1=_

::注意,这里是区分大小写的!
set str=%str1%
::复制字符串,用来截短,而不影响源字符串
:next
if not "%str%"=="" (
set /a num+=1
if "!str:~0,1!"=="%ch1%" goto last
::比较首字符是否为要求的字符,如果是则跳出循环
set "str=%str:~1%"
goto next
)
set /a num=0
::没有找到字符时,将num置零
:last

echo "postion:%num%"

::根据上面找到的num 截取str1
set /a num-=1
set cut_str=!str1:~,%num%!
echo %cut_str%

::将上面截取的字符串替换掉str2中的OEM
set last_str=!str2:OEM=%cut_str%!
echo %last_str%

“postion:4”
BMW
CANoe\\Flash\\BMW\\Files

以上是关于bat脚本:查找子字符串的位置以及bat脚本的字符串替换的主要内容,如果未能解决你的问题,请参考以下文章

bat文件中如何查找某个字符串并对其进行替换

Windos 批处理(bat)脚本——字符串操作

bat获取当前日期

在 .bat 脚本中保存字符串变量时出现问题

错误记录Windows 系统 bat 脚本报错 ( Java 生成 bat 脚本乱码处理 | 输出 GB2312 字符串 | Windows 中的换行时 )

[算法总结] 13 道题搞定 BAT 面试——字符串