如题,假如我有这样一串字符串,E:\TestProject\TestFrm\TestFrm\TestFrm.cpp,需要将它截取成E:\TestProject\TestFrm\TestFrm\和TestFrm.cpp两部分,该如何编写?
我的实现思路是先求出整个字符串的长度,同时能截取出文件名这一部分,通过截取的文件名求出文件名子串的长度,然后利用减法来求出目录字串的长度,进而能利用长度来求出目录子串,实现如下:
1.先提取出TestFrm.cpp
set aa=E:\TestProject\TestFrm\TestFrm\TestFrm.cpp
for /f "tokens=1-6" delims=\ " %%a in ("%aa%") do set filename=%%e
set filename_ex=%filename%.cpp
2.求出文件名字串和整个字符串的长度
set str1=%filename_ex%
set str2=%aa%
:next
if not "%str1%"=="" (
set /a num+=1
set "str1=%str1:~1%"
goto next1
)
echo str1=%str%
echo str1的长度为:%num%
set num=0
set str=%str2%
:next2
if not "%str%"=="" (
set /a num+=1
set "str=%str:~1%"
goto next2
)
echo str2=%str2%
echo str2的长度为:%num%
3.输出目录子串
echo 目录子串为:%aa~0,%num%%
问题是所输入的文件路径的深度(也就是等效于反斜杠符号\的个数是不定的),如何才能使得截取文件名字串准确无误呢?该如何修改上面的代码?谢谢!