我正在尝试编写一个 Powershell 脚本,用于计算文件夹和子文件夹中所有 .xml 文件的数量并列出其路径和值。
到目前为止,我已经完成了以下内容:
Get-ChildItem -Path c:/test -recurse -include *.xml
这很接近我想要的,但没有实际文件名,只有文件夹路径和计数。
这是我得到的:
> Directory: C:\test\A_Sub-folder
> Mode LastWriteTime Length Name
> ---- ------------- ------ ----
> -a--- 27/11/2015 11:29 0 AA.xml
>
> Directory: C:\test
> Mode LastWriteTime Length Name
> ---- ------------- ------ ----
> -a--- 27/11/2015 11:29 0 BB.xml
> -a--- 27/11/2015 11:29 0 CC.xml
> -a--- 27/11/2015 11:29 0 DD.xml
我正在尝试获取这个(或类似的)内容:
> Directory: C:\test\A_Sub-folder
> 1
> Directory: C:\test
> 3
计划在每个根目录上运行此脚本(某些驱动器大约有5k个.xml文件,所以我不确定这会对性能产生什么影响)。
编辑:
这可以完美地用于子文件夹,但由于某种原因它不能在根驱动器目录(例如e:/)下工作。 我尝试排除 \windows 和 \program files,但它不起作用。有没有方法可以在搜索中排除根目录?
目前的脚本:
$excludedPaths = @("E:\Windows", "E\Program Files", "E:\Program Files (x86)", "E:\MSSQL", "E:\MSSQL11.MSSQLSERVER");
$pathtocount = Read-Host -Prompt 'Input path to count xml files'
Get-ChildItem -Path $pathtocount -recurse -include *.xml | Where-Object { $excludedPaths -notcontains $_.Directory } | Group-Object -Property Directory | Sort-Object count