如何将Out-File构造为目录,然后构建该目录中的任何文件

时间:2017-01-12 15:28:42

标签: powershell

这是我迄今为止能够构建的内容,但如果目录中有多个文件,我会获得多个目录列表。我不确定如何按目录名称对输出进行分组。

Get-ChildItem -Path $patchesRemovedPath | 
    ForEach-Object {
        "$($_.Directory.Name)`n    $($_.Name)`n" | 
            Out-File "$patchesRemovedPath\Patches Removed Log.txt" -Append
    }

当前输出:

Folder1
    File1
Folder1
    File2
Folder1
    File3
Folder2
    File1
Folder2
    File2
Folder2
    File3

我想最终得到一个.txt文件,如下所示:

Folder1
    File1
    File2
    File3
Folder2
    File1
    File2
    File3

1 个答案:

答案 0 :(得分:0)

你需要2个循环:一个用于目录,另一个用于文件:

Get-ChildItem -Path 'C:\root\folder' -Directory | ForEach-Object {
  "`n{0}" -f $_.Name
  Get-ChildItem -Path $_.FullName -File | ForEach-Object {
    '    {0}' -f $_.Name
  }
} | Out-File 'C:\path\to\output.txt'

为简单起见,我在这里使用PowerShell v3语法。在PowerShell v2中,您必须使用Where-Object过滤器将Get-ChildItem结果分别限制为文件夹和文件。