script bat : trouve la position de la sous-chaîne et la chaîne de remplacement du script bat

Contexte du problème :

str1= BMW_SW4.0_RC1(Ce str1 est incertain, BMW peut aussi être AUDI, etc.)
str2=CANoe\Flash\OEM\Files(Ce chemin est fixe)
Ce qui doit être réalisé est le suivant : il doit s'agir d'un script Bat et remplacer l'OEM dans str2 par BMW. Tout de suitestr2=CANoe\Flash\BMW\Files

Problèmes à résoudre :
1. Comment extraire le nom de l'OEM spécifique en fonction du tiret (_) (la position de la sous-chaîne du script bat et l'interception de chaîne du script bat) 2. Comment extraire le nom de l'
OEM, en remplacement de la référence OEM de str2 (remplacement de chaîne de script de chauve-souris)
 :
interception de chaîne de chauve-souris

Copiez le script suivant dans le fichier test.bat, faites-le glisser vers cmd et exécutez-le directement

@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%

"position:4"
BMW
CANoe\Flash\BMW\Fichiers

おすすめ

転載: blog.csdn.net/qq_34414530/article/details/128551043