26

フォルダー (およびそのサブフォルダー) 内のすべてのファイルの種類を一覧表示するワンライナーを Powershell で作成しようとしています。

私はこれまでのところこれを持っています:

Get-ChildItem D:\Audio -Recursive | Select-Object PSParentPath, Extension | Export-Csv D:\Test.csv

ただし、フォルダーごとに、見つかったすべての拡張子を一度だけ表示したいと思います。

たとえば、D:\Audio\foo に 10 個の mp3 ファイルと 1 つの jpg ファイルがあり、D:\Audio\bar に 5 つの flac ファイルと 1 つの txt ファイルがあるとします。出力を次のようにしたい:

  • フー.mp3
  • フー.jpeg
  • バー .flac
  • バー.txt

Get-Unique を使用する必要があると思いますが、Path プロパティではなく Extension プロパティで指定するにはどうすればよいですか?

4

3 に答える 3

44

-Unique を Select-Object に追加するだけです:

Get-Childitem -Recurse | Select-Object PSParentPath,Extension -Unique

(また、ここでは DirectoryName が PSParentPath よりも優れている可能性があります)

于 2012-12-18T04:50:24.023 に答える
0

これを試して:

Get-ChildItem D:\Audio -Recurse | Group-Object psparentpath, extension | ? {(($_.Name -split ", .")[1]) -ne $Null } | ft -AutoSize @{Expression={(($_.Name.Split("\"))[$_.Name.Split("\").Length -1] -split ",")[0]};Label="Folder"}, @{Expression={($_.Name -split ", .")[1]};Label="Extension"}

フォルダ + 拡張子へのフルパスを表示するには、以下を試してください。

Get-ChildItem D:\Audio -Recurse | Group-Object psparentpath, extension | ? {(($_.Name -split ", .")[1]) -ne $Null } | ft -AutoSize @{Expression={($_.Name.Replace("Microsoft.PowerShell.Core\FileSystem::","") -split ", .")[0]};Label="Folder"}, @{Expression={($_.Name -split ", .")[1]};Label="Extension"}
于 2012-12-17T20:58:01.330 に答える