Win批处理脚本:从字符串中提取子字符串
问题描述:
我想根据分隔符/
从字符串中提取子字符串。子串提取必须是饥饿的,所以我想从字符串中获取所有字符,直到最后的/
。例如:Win批处理脚本:从字符串中提取子字符串
字符串:/ab/bcd/casd/adsd/se/23
字符串:/ab/bcd/casd/adsd/se/
P.S:我所看到的其他QnAs和他们不回答其中最后一个分隔符发生,应被用来提取的子字符串的特定部分。
答
@ECHO OFF
SETLOCAL
SET "String=/ab/bcd/casd/adsd/se/23"
FOR /f "delims=" %%a IN ("%string%") DO SET substring=%%~pa
SET "substring=%substring:\=/%"
echo %substring%
GOTO :EOF
你在细节上有点缺乏。假设涉及的字符串不包含\
,这可能适用于您。将字符串视为文件名,删除“名称+扩展名”,然后将/
转换为\
转换。
This works great!谢谢。 – yeniv
给出的示例不是问题,但如果字符串以驱动器号开头,则会失败。使用'in(“a:\ a%string%”)'然后在分配'“substring = %%〜pa”'后可以很容易地解决,用'%substring:〜2%'去除'\ a',然后将\转换回/。 – dbenham