windows 命令行 dir 命令:仅显示文件名,8.3 格式?

windows 命令行 dir 命令:仅显示文件名,8.3 格式?

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

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

答案1

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

答案2

如果您只希望显示 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 循环在批处理文件中提取子字符串前 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

答案3

for %i in (*) do echo %~nsxi

或者

for /f "tokens=4" %i in ('dir /a-d /x "%cd%" ^| find "/"') do echo %i

或者

for /f "tokens=1,2" %i in ('dir /a-d /-n "%cd%" ^| find "/"') do echo %i.%j

或包含目录/文件夹:

for /f "tokens=4" %i in ('dir /x "%cd%" ^| find "/"') do echo %i

在 Win 10 中测试

答案4

要将文件列入所有子目录中,请尝试以下操作:

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

 

相关内容