有没有办法列出所有子目录中除当前目录中的文件之外的所有文件?
dir /s /b
列出所有文件,包括当前目录中的文件。这不是我想要的。
答案1
使用 Powershell:
Get-ChildItem .\*\*
编辑:
上面的例子确实只获取了第二级目录而不是子文件夹的内容。
@guest 的答案是更好的:
Get-ChildItem -Directory | ForEach-Object {Get-ChildItem -Recurse | Select-Object FullName}
答案2
解决方案有多种,我将尝试一一解释。
批
1)for /d %i in (*) do @dir /b /s "%i"
(*)
扩展到当前目录中的所有文件。
for /d
然后循环遍历所有目录(不包括常规文件),dir /b /s
对每个目录执行。由于for
回显已执行的命令,@
因此用于抑制回显。
2)for /f "delims=" %i in ('dir /b /A:D') do @dir /b /s "%i"
'dir /b /A:D'
返回当前目录中的所有目录,每个目录占一行。
"delims="
指示for /f
不要标记一行而是将整行分配给%i
。
for /f
然后循环遍历所有行,dir /b /s
对每一行执行。
在批处理文件中使用%%i
而不是。%i
电源外壳
dir *\*
仅返回 2 级目录中的文件。
dir -recurse *\*
还返回更深层次目录中的文件,但不显示 2 级中的空文件夹。
正确的命令采用与批:
1)dir | where {$_.PsIsContainer} | foreach {dir -recurse $_} | foreach {echo $_.fullname}
2)dir -directory | foreach {dir -recurse $_} | foreach {echo $_.fullname}