中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何将一个文件的路径截取成目录和文件名两部分?
作者:
标题: 如何将一个文件的路径截取成目录和文件名两部分? 上一主题 | 下一主题
OK2440
新手上路





积分 5
发帖 5
注册 2010-7-4
状态 离线
『楼 主』:  如何将一个文件的路径截取成目录和文件名两部分?

如题,假如我有这样一串字符串,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%%
问题是所输入的文件路径的深度(也就是等效于反斜杠符号\的个数是不定的),如何才能使得截取文件名字串准确无误呢?该如何修改上面的代码?谢谢!

2010-7-4 23:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
OK2440
新手上路





积分 5
发帖 5
注册 2010-7-4
状态 离线
『第 2 楼』:  sorry,代码写的还是有点问题



  Quote:
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,这是目录字串的长度,进而求目录字串

2010-7-5 00:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 3 楼』:  

set aa=E:\TestProject\TestFrm\TestFrm\TestFrm.cpp
for /f  %%a in ("%aa%") do (
echo %%~nxa
echo %%~dpa
)

自己看for /?最后几页



S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2010-7-5 08:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复
OK2440
新手上路





积分 5
发帖 5
注册 2010-7-4
状态 离线
『第 4 楼』:  多谢了!

太感谢了!

2010-7-5 09:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: