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

猜你喜欢

转载自blog.csdn.net/qq_34414530/article/details/128551043