PowerShellでディレクトリサイズ一覧を取得する方法をChatGPTに聞いてみる

Powershellディレクトリサイズ一覧を取得するプログラムを書いてください。


PowerShellを使用して、ディレクトリサイズの一覧を取得するスクリプトを以下に示します。このスクリプトは、指定したディレクトリ内の各サブディレクトリのサイズを計算し、一覧表示します。

# ディレクトリのパスを指定します
$targetDirectory = "C:\Your\Directory\Path"

# ディレクトリ内の各サブディレクトリのサイズを取得して一覧表示します
Get-ChildItem -Path $targetDirectory -Directory | ForEach-Object {
    $directory = $_
    $directorySize = (Get-ChildItem -Path $directory.FullName -File -Recurse | Measure-Object -Property Length -Sum).Sum
    [PSCustomObject]@{
        DirectoryName = $directory.Name
        SizeInBytes = $directorySize
        SizeInKB = [math]::Round($directorySize / 1KB, 2)
        SizeInMB = [math]::Round($directorySize / 1MB, 2)
        SizeInGB = [math]::Round($directorySize / 1GB, 2)
    }
} | Format-Table -AutoSize

このスクリプトを使用するには、$targetDirectory 変数にディレクトリのパスを指定してから、PowerShellで実行してください。それにより、ディレクトリ内の各サブディレクトリの名前とサイズが表示されます。サイズはバイト、キロバイト、メガバイト、ギガバイトの単位で表示されます。


自分で書いたのと似たようなスクリプトになりますね。結果は以下のとおり。単位を変えて表示してくれるのが親切。

DirectoryName SizeInBytes  SizeInKB SizeInMB SizeInGB
------------- -----------  -------- -------- --------
assembly        199413658  194739.9   190.18     0.19
authman                           0        0        0
Framework       299379653 292362.94   285.51     0.28
Framework64     325518552 317889.21   310.44      0.3

ワンライナーに書き直してください。

ワンライナーディレクトリサイズの一覧を取得するPowerShellコマンドは次の通りです。

Get-ChildItem -Directory -Recurse | ForEach-Object { [PSCustomObject]@{ Path = $_.FullName; SizeInMB = [math]::Round((Get-ChildItem $_.FullName -File -Recurse | Measure-Object -Property Length -Sum).Sum / 1MB, 2) } } | Sort-Object SizeInMB -Descending | Format-Table -AutoSize

このコマンドは、指定したディレクトリ以下のすべてのサブディレクトリのサイズをMB単位で表示し、サイズが大きい順に一覧表示します。ディレクトリのパスとサイズ(MB)が表示されます。


うーん、これは期待したものとは違ってしまっている。

Path                                                                                                                                                          SizeInMB
----                                                                                                                                                          --------
C:\Windows\Microsoft.NET\Framework64                                                                                                                            310.44
C:\Windows\Microsoft.NET\Framework                                                                                                                              285.51
C:\Windows\Microsoft.NET\Framework64\v4.0.30319                                                                                                                 217.13
C:\Windows\Microsoft.NET\Framework\v4.0.30319                                                                                                                   199.99
C:\Windows\Microsoft.NET\assembly                                                                                                                               190.18
C:\Windows\Microsoft.NET\assembly\GAC_MSIL                                                                                                                      139.44
C:\Windows\Microsoft.NET\Framework64\v2.0.50727                                                                                                                  74.45
C:\Windows\Microsoft.NET\Framework\v2.0.50727                                                                                                                    67.39
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\NativeImages                                                                                                        45
C:\Windows\Microsoft.NET\Framework\v4.0.30319\NativeImages                                                                                                       38.77
C:\Windows\Microsoft.NET\assembly\GAC_64                                                                                                                         25.74
C:\Windows\Microsoft.NET\assembly\GAC_32                                                                                                                         24.99
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WPF                                                                                                              22.92
C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF                                                                                                                22.56
C:\Windows\Microsoft.NET\Framework\v4.0.30319\ja                                                                                                                 14.97
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ja                                                                                                               14.97
C:\Windows\Microsoft.NET\Framework\v3.0                                                                                                                          11.85
...