# 対象フォルダの入力
$targetFolder = Read-Host "対象フォルダのパスを入力してください(例:C:\Users\user\Desktop\テストフォルダ)"

# 出力先フォルダの入力
$outputFolder = Read-Host "出力先フォルダのパスを入力してください(例:C:\Users\user\Desktop\出力先フォルダ)"

# 出力ファイル名の入力
$outputFile = Read-Host "出力ファイル名を入力してください(例:容量出力結果.csv)"

# 対象フォルダ内のすべてのファイルとサブフォルダを再帰的に取得
$items = Get-ChildItem -Path $targetFolder -Recurse | ForEach-Object {
    $type = if ($_.PSIsContainer) { "フォルダ" } else { "ファイル" }
    $size = if ($type -eq "ファイル") {
        $_.Length / 1MB
    } else {
        (Get-ChildItem $_.FullName -Recurse -File | Measure-Object -Property Length -Sum).Sum / 1MB
    }

    # オブジェクトを作成
    [PSCustomObject]@{
        パス = $_.FullName
        サイズMB = [Math]::Round($size, 2)
        種別 = $type
    }
}

# サイズで並べ替えてCSVに出力
$items | Sort-Object サイズMB -Descending | Export-Csv -Path (Join-Path $outputFolder $outputFile) -NoTypeInformation -Encoding UTF8

Write-Host "処理が完了しました。出力先フォルダを確認してください。"