Windows命令行dir命令:仅以8.3格式显示文件名?


11

我知道“ dir / w”或“ dir / b”仅显示文件名。“ dir / x”或“ dir / X”显示8.3格式,但一起显示所有其他信息,例如长格式文件名,日期和大小。

是否可以调用dir,仅显示文件名(不显示日期或大小),并以8.3格式显示?

Answers:


10
for /R %A in (*.*) do @echo %~nsA %~nA

不带子目录:

for %A in (*.*) do @echo %~nsA %~nA

添加隐藏文件:

for /F "tokens=*" %A in ('dir /B/A:-/S *') do @echo %~nsA %~nA

不带子目录:

for /F "tokens=*" %A in ('dir /B/A:- *') do @echo %~nsA %~nA

您可以包括证明它可以做到的输出吗
barlop

我将如何将第一个命令的结果插入文本文件?我收到以下错误:“无法在打开用户映射部分的文件上执行请求的操作。”
bdb484 '19

3

如果只希望显示8.3名称,而使用“ dir / -n”,则在每行的开头将获得8.3名称。注意:它将扩展名和文件名用空格而不是句点分隔。

C:\Users\User>dir /-n
 Volume in drive C has no label.
 Volume Serial Number is 5C60-1B61

 Directory of C:\Users\User

.             <DIR>             01/28/2015  11:26 PM
..            <DIR>             01/28/2015  11:26 PM
Contacts      <DIR>             12/27/2014  04:46 PM
Desktop       <DIR>             01/25/2015  05:06 PM
DOCUME~1      <DIR>             01/27/2015  10:20 PM
DOWNLO~1      <DIR>             01/27/2015  10:10 PM
FAVORI~1      <DIR>             12/27/2014  04:46 PM
GOOGLE~1      <DIR>             01/28/2015  02:08 AM
Links         <DIR>             01/25/2015  05:06 PM
Music         <DIR>             12/27/2014  04:46 PM
Pictures      <DIR>             12/27/2014  04:46 PM
SAVEDG~1      <DIR>             12/27/2014  04:46 PM
Searches      <DIR>             12/27/2014  04:46 PM
TESTIN~1 TXT                  8 01/28/2015  10:32 PM
TESTIN~2 BAT                175 01/28/2015  11:26 PM
TESTIN~1 BAT                164 01/28/2015  11:26 PM
UNIGIN~1      <DIR>             10/28/2014  07:01 PM
Videos        <DIR>             12/27/2014  04:46 PM
               3 File(s)            347 bytes
              16 Dir(s)  3,896,034,717,696 bytes free

但是,您可以在批处理文件的for循环中使用“ dir / -n”,然后提取前12个字符的子字符串,以摆脱每一行的其余部分。例如:

@echo off
setlocal EnableDelayedExpansion

for /f "skip=7 tokens=*" %%i in ('dir /-n ^| find /v "File(s)" ^| find /v "Dir(s)"') do (
   set x=%%i
   echo !x:~0,12!
)

“ skip = 7”跳过前7行,这既不是文件名也不是目录名,并且“ dir / -n”的输出通过两个find命令传递,以删除“ dir / -n”产生的后两行”(管道符号“ |”必须通过“ ^” 进行“ 转义 ”。由于子字符串提取发生在批处理文件中的for循环中,因此需要“ setlocal EnableDelayedExpansion”,并且必须将“!”与变量x而不是“%”。对于上面的示例,执行批处理文件后,您将看到以下输出:

C:\Users\User>testing456
Contacts
Desktop
DOCUME~1
DOWNLO~1
FAVORI~1
GOOGLE~1
Links
Music
Pictures
SAVEDG~1
Searches
TESTIN~1 TXT
TESTIN~2 BAT
TESTIN~1 BAT
UNIGIN~1
Videos

Nitpick:一个或多个空格。尝试创建一个名为的文件,以abc.txt查看其作用。然后,为此创建一个名为的文件abc.docx
CVn 2015年

0

在玩了一个小时之后,我想到了以下内容:

从DOS提示符:

for /F "tokens=*" %A in ('dir /B/A:-/S c:\Windows') do (@echo %~sA>> "%temp%\file_list_8dot3.txt")

来自.BAT或.CMD文件:

for /F "tokens=*" %%A in ('dir /B/A:-/S c:\Windows') do (@echo %%~sA>> "%temp%\file_list_8dot3.txt")

注意: 此脚本在长文件名方面仍然存在问题,但是它将继续并生成一个8dot3文本文件,然后可以将该文本文件泵入任何其他批处理文件中。

以下是我的整个测试.Bat文件:

@echo off
cls

set ll=%temp%\file_list_8dot3.txt

if exist "%ll%" del "%ll%"
for /F "tokens=*" %%A in ('dir /B/A:-/S %temp%') do (@echo %%~sA>> "%ll%")

start /wait notepad "%ll%"

if exist "%ll%" del "%ll%"

0

要将文件列出到所有子目录中,请尝试以下一种方法:

for /d /r %i in (*.*) do dir "%i" /B > %i/test.txt

 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.