有很多解决方案可以使用命令行获取目录内的文件总数,但是有没有办法使用 Windows 上的命令行(powershell 或 CMD)获取每个子目录的文件数?
例如:我们有以下结构:
root
-> a
-> b
-> c
-> d
请求的命令将输出类似以下内容的内容:
a 5300
b 40
c 250
d 13
答案1
有很多解决方案可以使用命令行获取目录内的文件总数,但是有没有办法使用 Windows 上的命令行(powershell 或 CMD)获取每个子目录的文件数?
使用完全相同的解决方案,仅将其放在“每个目录”循环中。
在 Cmd 中,使用
for /d
来迭代目录:for /d %a in (root\*) do example_command_to_count_files_in_dir "%~a"
在 PowerShell 中,使用
ForEach-Object
(也称为%
)迭代Get-ChildItem
(又名 gci 又名 dir)的结果。在循环中,$_
用于引用每个项目。gci root | % { something_to_count_files $_ }
例如,无论你使用 Measure-Object 方法@(dir)
还是https://stackoverflow.com/a/14716609,你可以把整个内容放在%
脚本块中:
dir root | % { $cout = (dir $_ -files | measure).count; echo "$_ has $count files"; }
dir root | % { $cout = @(dir $_).count; echo "$_ has $count items"; }
当然,对于任何其他采用目录名的命令,无论是 PowerShell 内置 cmdlet 还是外部 .exe,该操作都同样有效。