获取特定子文件夹中的文件列表

时间:2015-12-02 08:31:34

标签: windows powershell cmd

我正在尝试仅在一个子文件夹中获取.csv(及相关属性)中的文件列表并没有成功。 这是我的情况:

Root
|
| - Folder 1
|   | - xxxxxx
|   | - yyyyyyy
|   | - INTERESTED_FOLDER  (that contains files requested)
|
| - ...
|
| - Folder n:
    | - xxxxxx
    | - yyyyyy
    | - INTERESTED_FOLDER (that contains files requested)

我在网上找到的例子谈到了在所有子目录中获取所有文件名,当我需要只搜索一个但迭代所有根文件夹1-n时。 谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用Get-ChildItem cmdlet首先检索所有文件夹1-n,而不是再次调用它并过滤INTERESTED_FOLDER,最后再调用它以检索其中的所有项目导出csv:

Get-ChildItem | ? { $_.PSIsContainer } | 
    Get-ChildItem -Filter 'INTERESTED_FOLDER' | ? { $_.PSIsContainer } | 
        Get-ChildItem -Recurse |
            Export-Csv -Path c:\content.csv

答案 1 :(得分:0)

使用INTERESTED_FOLDERs参数一次抓取所有-Include,然后获取所有这些内容。

如果您使用Where-Object,那么PowerShell将检索所有项目,然后过滤它们,这需要更长的时间,如果您有很多项目可能会很重要(您可以通过在Measure-Object中包含代码块来评估差异声明)。始终尝试使用本机提供程序的过滤功能,因为这将减少执行时间。如果您使用的是PowerShell v3或更高版本,则Get-ChildItem中提供了文件或文件夹的其他参数:

Get-ChildItem -Path $Path -Recurse -Directory -Include 'INTERESTED_FOLDER','INTERESTED_FOLDER1' |
Foreach-Object {Get-ChildItem $_ -File} |
Export-Csv -Path $OutPutFile -NoTypeInformation