中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 09:31
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]请问P处能不能得到一个文件名的短文件名 查看 1,877 回复 15
楼 主 [求助]请问P处能不能得到一个文件名的短文件名 发表于 2008-08-10 18:20 ·  中国 广东 电信
初级用户
积分 80
发帖 37
注册 2008-02-06 18:34
18年会员
UID 110292
性别 男
状态 离线
哪个高手知道不,
高手们,我都看不懂了,我打个比方,
我要得到D盘下一个文件的短文件名,要在CMD里显示出它的短文件名字,
谢谢在面几位。顺便问一下
xx..\这种件夹的短名怎么得到,用下面的方法不行哦

[ Last edited by ttj36 on 2008-8-11 at 02:49 PM ]
2 发表于 2008-08-10 18:30 ·  中国 江苏 常州 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
for %%i in (*) do echo %%~snxi
简单!简单!再简单!
3 发表于 2008-08-10 18:43 ·  中国 广东 电信
初级用户
积分 80
发帖 37
注册 2008-02-06 18:34
18年会员
UID 110292
性别 男
状态 离线
我怎么用不来,请问如何使用,
4 发表于 2008-08-10 18:54 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
%~sI - expanded path contains short names only

The modifiers can be combined to get compound results:

%~dpI - expands %I to a drive letter and path only
%~nxI - expands %I to a file name and extension only
%~fsI - expands %I to a full path name with short names only
%~dp$PATH:I - searches the directories listed in the PATH
environment variable for %I and expands to the
drive letter and path of the first one found.
%~ftzaI - expands %I to a DIR like output line
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
5 发表于 2008-08-11 01:49 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
for %%i in ("C:\test\abcdefghijk.txt") do echo %%~snxi
6 发表于 2008-08-11 11:09 ·  中国 上海 电信
初级用户
积分 80
发帖 37
注册 2008-02-06 18:34
18年会员
UID 110292
性别 男
状态 离线
谢谢,好象得不到xx..\这种件夹的短名
7 发表于 2008-08-11 11:41 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
可以
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
8 发表于 2008-08-11 12:35 ·  中国 广东 深圳 电信
初级用户
★★
积分 153
发帖 103
注册 2008-03-27 19:38
18年会员
UID 114210
性别 男
状态 离线
FOR /F "delims==" %i IN ('dir /b') DO @echo %~si
9 Re 6楼 发表于 2008-08-14 23:02 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
是这个意思吗?

@echo off
for /f "tokens=5 delims= " %%a in ('dir /x ^| findstr xxxxxxxxx.') do echo %%a
10 发表于 2008-08-15 19:46 ·  中国 广东 电信
初级用户
积分 80
发帖 37
注册 2008-02-06 18:34
18年会员
UID 110292
性别 男
状态 离线
楼上的这位大哥,好够象不行哦,不行得到SD..的短名

[ Last edited by ttj36 on 2008-8-15 at 07:48 PM ]
11 发表于 2008-08-15 20:47 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
Q: 为什么不行啊?
A: 去电线杆上找个老军医的手机,他是专治+包治这个的。如果治疗周期较长,建议列出你的测试环境、测试用例、出错信息,供大家帮助你解决问题。
12 发表于 2008-08-15 22:26 ·  中国 广东 电信
初级用户
积分 80
发帖 37
注册 2008-02-06 18:34
18年会员
UID 110292
性别 男
状态 离线
你试试看,我在D盘,你也可以建个MD d:\SD..\ 文件夹,你得到短名看看,

[ Last edited by ttj36 on 2008-8-15 at 10:28 PM ]
13 发表于 2008-08-15 22:36 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

D:\>md sdsdsdsdsd..\

D:\>for /f "tokens=4 delims= " %a in ('dir /x ^| findstr "sdsdsdsdsd."') do @echo %a
SDSDSD~1
14 发表于 2008-08-15 22:55 ·  中国 广东 电信
初级用户
积分 80
发帖 37
注册 2008-02-06 18:34
18年会员
UID 110292
性别 男
状态 离线
for /f "tokens=4 delims= " %a in ('dir /x ^| findstr "d:\sd."') do @echo %a
在BAT里,怎么不行,
而且我得到2个,因为我建了2个这种文件夹一个是,是ASDF. SD.运行长的那个得到一个ASDF~1 ,而运行短的,得到2个,哈哈

[ Last edited by ttj36 on 2008-8-15 at 10:57 PM ]
15 发表于 2008-08-15 23:00 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
cmd里面for的控制变量用一个百分号
bat里面for的控制变量用两个百分号

建议复习一下批处理基础教程^_^
论坛跳转: