在命令提示符下递归获取裸文件名

TMR*_*MRW 20 command-line recursive filenames

我在尝试仅递归获取文件名(没有扩展名或文件路径)时遇到了一个小问题。这在根文件夹中对我有用:

dir /b
Run Code Online (Sandbox Code Playgroud)

但是当我添加 /s 来递归扫描时,我还在我不想要的文件名之前得到了文件路径。有没有办法从目录中的所有子文件夹中获取裸文件名?

我在 Windows 7 x64 我宁愿使用常规命令提示符而不是 PS 或 VBS

Nik*_* So 16

使用以下命令:

dir /b /a /s
Run Code Online (Sandbox Code Playgroud)
  • /b从输出中去除日期和其他详细信息
  • /a只输出文件名,没有路径
  • /s启用递归目录列表

如果需要将输出保存到文件,可以使用:

dir /b /a /s >> list_of_names.txt
Run Code Online (Sandbox Code Playgroud)

编辑实际上上述解决方案没有达到原始问题的目标。我从问题中注意到的一件事是该帖子要求递归列出。另一个答案缺少,所以我认为在其他回答者的答案中添加“/s”就可以了

for /f %a in ('dir /b /s') do @echo %~na
Run Code Online (Sandbox Code Playgroud)

  • 这不起作用, /a 不能那样工作 - 它是您要列出的文件类型的过滤器。在进行递归目录列表时,它不会从文件名中删除路径。 (4认同)

Mul*_* IT 6

尝试这个:

for /f "delims=" %a in ('dir /b /s') do @echo %~na
Run Code Online (Sandbox Code Playgroud)

有关如何工作以及它在做什么的更多信息,请键入 for /?