如何在DOS / Windows中递归列出文件名(仅)?[重复]


20

可能重复:
在命令提示符下以递归方式获取裸文件名

我想递归地列出目录中的所有文件,仅显示文件名(不带扩展名,不带完整路径)。我正在使用Windows / DOS。

我可以得到的最接近的dirdir /s /b,但它列出了完整路径并显示了扩展名。

好吧,也许我可以忍受这些扩展,但是我必须摆脱这条路!

有任何想法吗?


1
哪个版本的Windows?
OldWolf 2011年

@OldWolf:XP。我不希望使用任何第三方软件/
David B

Answers:


28
cd /d C:\Path\To\Source\Folder
for /r %i in (*) do @echo %~ni

如果需要将列表保存到文件中,请追加>> C:\Path\To\list_file.txtfor命令末尾。

如果最终想要扩展名,请更改%~ni%~nxi

要在批处理文件中使用,请将所有更改%%%


6
如果你需要的路径和名称,延期,变更%〜に至%〜pnxi

这可行,但不会显示隐藏文件。我还如何查看隐藏的文件?
2015年

@ala:如果要显示隐藏文件,则仅需将适当的标志传递给命令,才能使用类似David Remy的答案的方法dir
afrazier 2015年

7

如果您愿意加载powershell,则应执行此命令。

get-childitem "d:\acc" -recurse|foreach {$_.Basename}

5

进行以下操作应该可以满足您的需求:

@for /f "delims=" %a in ('Dir /s /b %systemdrive%') do echo %~na

只需将输出管道传输到文件,然后在需要时从那里使用它即可。


3

不知道您是否认为它是第三方软件,因为它是Microsoft发行的,并附带7,但是powershell可以轻松解决您的大多数问题。如果尚未安装,则可以在Microsoft的网站上将其用于XP。

Get-ChildItem -path "C:\Program Files\" -recurse | foreach ($_) {
    write $_.name
}
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.