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 

你在细节上有点缺乏。假设涉及的字符串不包含\,这可能适用于您。将字符串视为文件名,删除“名称+扩展名”,然后将/转换为\转换。

+0

This works great!谢谢。 – yeniv

+0

给出的示例不是问题,但如果字符串以驱动器号开头,则会失败。使用'in(“a:\ a%string%”)'然后在分配'“substring = %%〜pa”'后可以很容易地解决,用'%substring:〜2%'去除'\ a',然后将\转换回/。 – dbenham