中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 05:54
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎样将一个完整的路径字符串拆分 查看 1,011 回复 5
楼 主 怎样将一个完整的路径字符串拆分 发表于 2008-07-11 16:12 ·  中国 广东 电信
初级用户
菜鸟
积分 137
发帖 49
注册 2006-12-20 04:45
19年会员
UID 74007
性别 男
状态 离线
比如'd:\test\t.txt'
我想获取't.txt'
可以吗,
我是一只小菜鸟,依呀依呀哟~~~
2 发表于 2008-07-11 17:17 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
for /f %%a in ("d:\test\t.txt") do echo %%~nxa
3 发表于 2008-07-11 17:51 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线

请楼主仔细理解变量扩充,以变量%%i为例:
~I - 删除任何引号("),扩充 %I
%~fI - 将 %I 扩充到一个完全合格的路径名
%~dI - 仅将 %I 扩充到一个驱动器号
%~pI - 仅将 %I 扩充到一个路径
%~nI - 仅将 %I 扩充到一个文件名
%~xI - 仅将 %I 扩充到一个文件扩展名
%~sI - 扩充的路径只含有短名
%~aI - 将 %I 扩充到文件的文件属性
%~tI - 将 %I 扩充到文件的日期/时间
%~zI - 将 %I 扩充到文件的大小
%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充
到找到的第一个完全合格的名称。如果环境变量名
未被定义,或者没有找到文件,此组合键会扩充到
空字符串

可以组合修饰符来得到多重结果:

%~dpI - 仅将 %I 扩充到一个驱动器号和路径
%~nxI - 仅将 %I 扩充到一个文件名和扩展名
%~fsI - 仅将 %I 扩充到一个带有短名的完整路径名
%~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充
到找到的第一个驱动器号和路径。
%~ftzaI - 将 %I 扩充到类似输出线路的 DIR
批处理之家新域名:www.bathome.net
4 发表于 2008-07-11 18:32 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
学习批处理,第一步就是学会查看系统自带的命令帮助信息。
英文好的话,最好切换到英文查看,中文的有些信息看的云里雾里。
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
5 发表于 2008-07-11 19:03 ·  中国 广东 电信
初级用户
菜鸟
积分 137
发帖 49
注册 2006-12-20 04:45
19年会员
UID 74007
性别 男
状态 离线
我还想问下,好像在FOR循环内,是不是不能对变量进行操作呀,
比如说
for %%a in ("d:\text\*.txt") do echo %%a
for /f %%b in ("d:\test\t.txt") do echo %%~nxa

[ Last edited by wyd531 on 2008-7-11 at 07:04 PM ]
我是一只小菜鸟,依呀依呀哟~~~
6 发表于 2008-07-11 19:21 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
不要乱用/f开关,呵呵。
@echo off
for %%a in ("c:\test\*.txt") do echo %%a
for %%b in ("c:\test\t.txt") do echo %%~nxb
论坛跳转: