2017-01-12 7 views
0

これは私がこれまで構築できたものですが、ディレクトリに複数のファイルがある場合は複数のディレクトリリストを取得します。ディレクトリ名で出力をグループ化する方法がわかりません。Out-Fileをディレクトリとして指定し、そのディレクトリ内のファイルを構成する方法

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
+0

このような出力をどうやって得たのですか? Folder1とFolder2は指定されたパスの中にありますか? –

答えて

0

あなたは2つのループが必要になるだろう:のための1つをディレクトリ、その他のファイル:

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の結果をフォルダとファイルに制限する必要があります。

+0

Ansgarさん、ありがとうございました。私があなたに持っている唯一の質問は、新しいディレクトリの開始前に空の行を持つことが可能なのでしょうか? –

+0

単に名前をエコーするのではなく、ディレクトリ名をエコーするだけです: '' "' {0} "-f $ _。Name'' –

+0

ファイルを分けるように見えます。私が探していたのは、ディレクトリの最後のファイルとその下の新しいディレクトリの間に空きスペースを設けることでした。 –

関連する問題