计算每个子文件夹中的文件数量,Windows命令行

计算每个子文件夹中的文件数量,Windows命令行

有很多解决方案可以使用命令行获取目录内的文件总数,但是有没有办法使用 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,该操作都同样有效。

相关内容