Board logo

标题: [求助]请问P处能不能得到一个文件名的短文件名 [打印本页]

作者: ttj36     时间: 2008-8-10 18:20    标题: [求助]请问P处能不能得到一个文件名的短文件名
哪个高手知道不, 高手们,我都看不懂了,我打个比方, 我要得到D盘下一个文件的短文件名,要在CMD里显示出它的短文件名字, 谢谢在面几位。顺便问一下 xx..\这种件夹的短名怎么得到,用下面的方法不行哦 [ Last edited by ttj36 on 2008-8-11 at 02:49 PM ]

作者: terse     时间: 2008-8-10 18:30
for %%i in (*) do echo %%~snxi

作者: ttj36     时间: 2008-8-10 18:43
我怎么用不来,请问如何使用,

作者: pusofalse     时间: 2008-8-10 18:54
%~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

作者: HAT     时间: 2008-8-11 01:49
@echo off
for  %%i in ("C:\test\abcdefghijk.txt") do echo %%~snxi

作者: ttj36     时间: 2008-8-11 11:09
谢谢,好象得不到xx..\这种件夹的短名

作者: slore     时间: 2008-8-11 11:41
可以

作者: kioskboy     时间: 2008-8-11 12:35
FOR /F "delims==" %i IN ('dir /b') DO @echo %~si

作者: HAT     时间: 2008-8-14 23:02    标题: Re 6楼
是这个意思吗?
@echo off
for /f "tokens=5 delims= " %%a in ('dir /x ^| findstr xxxxxxxxx.') do echo %%a

作者: ttj36     时间: 2008-8-15 19:46
楼上的这位大哥,好够象不行哦,不行得到SD..的短名 [ Last edited by ttj36 on 2008-8-15 at 07:48 PM ]

作者: HAT     时间: 2008-8-15 20:47
Q: 为什么不行啊? A: 去电线杆上找个老军医的手机,他是专治+包治这个的。如果治疗周期较长,建议列出你的测试环境、测试用例、出错信息,供大家帮助你解决问题。

作者: ttj36     时间: 2008-8-15 22:26
你试试看,我在D盘,你也可以建个MD d:\SD..\ 文件夹,你得到短名看看, [ Last edited by ttj36 on 2008-8-15 at 10:28 PM ]

作者: HAT     时间: 2008-8-15 22:36
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

作者: ttj36     时间: 2008-8-15 22:55
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 ]

作者: HAT     时间: 2008-8-15 23:00
cmd里面for的控制变量用一个百分号 bat里面for的控制变量用两个百分号 建议复习一下批处理基础教程^_^

作者: ttj36     时间: 2008-8-15 23:03
for /f "tokens=4 delims= " %%a in ('dir /x ^| findstr "d:\sd."') do echo %%a 不行呀,哪有问题,请指点一下,只能进入,D目录在运行 for /f "tokens=4 delims= " %%a in ('dir /x ^| findstr "sd."') do echo %%a 而且很不准,只要有SD文字的都会出来, [ Last edited by ttj36 on 2008-8-16 at 11:23 AM ]