Board logo

标题: 如何将一个文件的路径截取成目录和文件名两部分? [打印本页]

作者: OK2440     时间: 2010-7-4 23:58    标题: 如何将一个文件的路径截取成目录和文件名两部分?
如题,假如我有这样一串字符串,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%% 问题是所输入的文件路径的深度(也就是等效于反斜杠符号\的个数是不定的),如何才能使得截取文件名字串准确无误呢?该如何修改上面的代码?谢谢!

作者: OK2440     时间: 2010-7-5 00:03    标题: sorry,代码写的还是有点问题
Originally posted by OK2440 at 2010-7-4 23:58: 如题,假如我有这样一串字符串,E:\TestProject\TestFrm\TestFrm\TestFrm.cpp,需要将它截取成E:\TestProject\TestFrm\TestFrm\和TestFrm.cpp两部分,该如何编写? 我的实现 ...
将后面求整个字符串的个数num改成num2,然后求num2-num,这是目录字串的长度,进而求目录字串

作者: slore     时间: 2010-7-5 08:54
set aa=E:\TestProject\TestFrm\TestFrm\TestFrm.cpp for /f %%a in ("%aa%") do ( echo %%~nxa echo %%~dpa ) 自己看for /?最后几页

作者: OK2440     时间: 2010-7-5 09:17    标题: 多谢了!
太感谢了!