如何列出具有完整路径但不递归的给定目录中的所有文件和目录?


14

有点像dir /b命令,但我还需要隐藏文件和系统文件。内置的dir命令不允许列出其余的“隐藏”文件,并且我必须/s在其中使用完整路径,这当然是非递归的。

我也玩过Windows版本的ls命令,也没有运气。要显示完整路径,必须mydir\*在要列出的目录末尾添加星号(),但这会使其递归。


1
我可以解决部分问题:/ a标志使dir包含隐藏文件和系统文件。
哈里·约翰斯顿

Answers:


9

如果您不想安装任何东西,也可以使用以下命令:

for /f "delims=" %a in ('cd') do @for /f %b in ('dir /b /a') do @echo %a\%b

您必须先cd进入目录,否则它将无法正常工作。


2
或这个!为/ f“ delims =”%b in('dir / b / a')做@echo%cd%\%b但是,您的方法很有趣,很通用
barlop 2012年

您能解释一下此命令的工作原理吗?
rubo77

18

尝试以下命令:

dir /s /b /a

它将提供所有文件,您可以根据需要运行它,也可以FIND添加文件夹名称。


1

如果您尝试使用ls,为什么不安装cygwin?您可以在cygwin中使用find:

find -name "*"

如果您确实安装了cygwin并想在cygwin中使用find,请确保通过使用完整路径或在system32之前插入cygwin bin路径来调用cygwin中的find,因为Windows也具有find.exe。


我检查了unixutils,发现是递归的:(
rsk82

2
@ rsk82:使用-maxdepth 1,不是。
丹尼斯

0

您可以使用gnuwin32下载sed。这将添加当前目录。

执行%cd%不起作用..因此%cd:\=\\%将每个转换\\\,结果为\

C:\WINDOWS>dir /b | sed "s/^/%cd:\=\\%\\/" 
C:\WINDOWS\0.log
C:\WINDOWS\003109_.tmp
C:\WINDOWS\addins

0

这是一个古老的问题,但我认为我还是会添加一些内容。

DIR不能正确遍历您想要的所有目录树,尤其是C:上的目录树。由于不同的保护措施,它只是在某些地方放弃了。

ATTRIB工作得更好,因为它可以找到更多。(为什么会有这种区别?为什么MS在这方面会使一个实用程序以一种方式工作而另一个使另一种工作有所不同?我知道该死。)以我的经验,处理此问题的最有效方法(虽然很麻烦)是获得两个清单:

attrib /s /d C:\ >%TEMP%\C-with-directories.txt

attrib /s C:\ >%TEMP%\C-without-directories.txt

并得到他们之间的区别。区别在于C:中的目录(隐藏得太深的目录除外)。对于C :,我通常会以管理员身份运行。


0

我想使用目录列表,因此我用Google搜索了“打印目录”。我找到了这样做的说明,但其中包括对注册表的更改。我不想涉足此事,不想使用清单而不是打印清单,所以我找到了一种无需更改注册表即可实现我的目标的方法。我创建了两个批处理文件程序,要保存在Utility Directory中。然后,当我要打印或使用目录时,只需将适当的批处理文件复制到主题目录中,然后执行即可!他们来了:

rem PrintThisDirectory.bat
rem Prints the directory where it resides
@echo off
dir %1/-p/o:gn> "%temp%\listing"
start /w notepad "%temp%\listing"

Rem ShowThisDirectory.bat
Rem Displays in Notepad the Directory where it resides
@echo off
dir %1/o:gn> "%temp%\listing"
start /w notepad "%temp%\listing"
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.