【Windows】ごみ箱に送ったファイルの「元の場所」をプロパティなしで一括特定・リスト出力する手順 | 大量データの整理

【Windows】ごみ箱に送ったファイルの「元の場所」をプロパティなしで一括特定・リスト出力する手順 | 大量データの整理
🛡️ 超解決

ごみ箱に大量のファイルが溜まり、どれがどこから来たのか分からずに困っていませんか。一つ一つのファイルのプロパティを開いて元の場所を確認するのは、膨大な時間がかかります。

この記事では、Windowsのごみ箱にあるファイルの元の場所を、PowerShellスクリプトを使って一括で特定し、リストとして出力する手順を解説します。

この手順を実践することで、大量のファイルを効率的に整理し、必要なファイルを正確に復元できるようになります。

【要点】ごみ箱ファイルの元の場所を一括特定・リスト出力する方法

  • PowerShellスクリプトの作成: ごみ箱内のファイル情報から元のパスを抽出するスクリプトを作成します。
  • スクリプトの実行: 作成したスクリプトをPowerShellで実行し、元の場所情報を取得します。
  • CSVファイルへの出力: 抽出した元の場所のリストをCSV形式で出力し、後から確認や分析に利用できるようにします。

ADVERTISEMENT

ごみ箱のファイル情報と元の場所の特定方法

Windowsのごみ箱は、削除されたファイルだけでなく、そのファイルが元々どこに保存されていたかの情報も保持しています。この情報は、ごみ箱内の隠しフォルダに特殊な形式で格納されています。

具体的には、ごみ箱内の各ファイルには「$R」で始まるファイル名と「$I」で始まるファイル名がペアで存在します。「$I」ファイルには、対応する「$R」ファイル、つまり削除されたファイル本体の元のパスと削除日時が記録されています。

この仕組みを利用することで、手動でプロパティを確認する手間を省き、PowerShellスクリプトを使って一括で元の場所の情報を抽出できます。この機能は、特に大量のファイルを整理する際に非常に役立ちます。

PowerShellスクリプトで情報を抽出する前提条件

PowerShellスクリプトを安全に実行するには、事前にいくつか確認すべき点があります。

まず、PowerShellの実行ポリシーがスクリプトの実行を許可しているかを確認してください。通常は「Restricted」に設定されており、スクリプトの実行が制限されています。

一時的に「RemoteSigned」に変更することで、ローカルで作成したスクリプトを実行できるようになります。この変更は、スクリプト実行後に元に戻すことを推奨します。

ごみ箱ファイルの元の場所をリスト出力する手順

ここでは、PowerShellスクリプトを使用して、ごみ箱内のファイルの元の場所を特定し、CSVファイルとして出力する具体的な手順を説明します。

  1. PowerShellスクリプトの作成
    以下のPowerShellスクリプトをメモ帳などのテキストエディタに貼り付け、「Get-RecycleBinOriginalPath.ps1」などの名前で保存します。ファイルの種類は「すべてのファイル」を選択し、文字コードは「UTF-8」で保存してください。
    $RecycleBinPath = "$env:SystemDrive\$Recycle.Bin"
    
    $Output = @()
    
    Get-ChildItem -Path $RecycleBinPath -Recurse -Filter "$I*" | ForEach-Object {
        $I_File = $_.FullName
        $R_File = $I_File -replace '\$I', '\$R'
        
        # $Iファイルの読み込み
        try {
            $Bytes = [System.IO.File]::ReadAllBytes($I_File)
            $OriginalPathLength = [System.BitConverter]::ToUInt16($Bytes, 24) * 2
            $OriginalPath = [System.Text.Encoding]::Unicode.GetString($Bytes, 28, $OriginalPathLength)
            $DeletionTime = [DateTime]::FromFileTimeUtc([System.BitConverter]::ToInt64($Bytes, 8))
            
            $Output += [PSCustomObject]@{ 
                FileName = Split-Path -Leaf $OriginalPath
                OriginalPath = $OriginalPath
                DeletionTime = $DeletionTime
                RecycleBinPath = $R_File
            }
        }
        catch {
            Write-Warning "$I_File の読み込み中にエラーが発生しました: $($_.Exception.Message)"
        }
    }
    
    $Output | Export-Csv -Path "$env:USERPROFILE\Desktop\RecycleBinOriginalPaths.csv" -NoTypeInformation -Encoding UTF8
    Write-Host "元の場所のリストがデスクトップに RecycleBinOriginalPaths.csv として出力されました。"

    このスクリプトは、ごみ箱内の「$I」ファイルから元のパスと削除日時を抽出し、CSV形式でデスクトップに出力します。

  2. PowerShellの実行ポリシーを確認・変更する
    タスクバーの検索ボックスに「PowerShell」と入力し、「Windows PowerShell」を右クリックして「管理者として実行」を選択します。
    PowerShellウィンドウが開いたら、現在の実行ポリシーを確認するため、以下のコマンドを入力してEnterキーを押します。

    Get-ExecutionPolicy

    もし「Restricted」と表示された場合は、スクリプトの実行を許可するため、以下のコマンドを入力してEnterキーを押します。確認メッセージが表示されたら「Y」を入力してEnterキーを押してください。

    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

    スクリプト実行後は、セキュリティのため実行ポリシーを元に戻すことを推奨します。元に戻すには、Set-ExecutionPolicy Restricted -Scope CurrentUserと入力します。

  3. PowerShellスクリプトを実行する
    管理者として実行したPowerShellウィンドウで、作成したスクリプトファイルのパスを指定して実行します。スクリプトをデスクトップに保存した場合の例を以下に示します。

    & "$env:USERPROFILE\Desktop\Get-RecycleBinOriginalPath.ps1"

    コマンドを入力したらEnterキーを押してください。スクリプトが実行され、ごみ箱内のファイル情報が収集されます。処理が完了すると、「元の場所のリストがデスクトップに RecycleBinOriginalPaths.csv として出力されました。」というメッセージが表示されます。

  4. 出力されたCSVファイルを確認する
    スクリプトの実行が完了したら、デスクトップに「RecycleBinOriginalPaths.csv」というファイルが作成されています。このファイルをダブルクリックして開くと、Excelなどのスプレッドシートアプリケーションで内容を確認できます。
    ファイル名、元のパス、削除日時、ごみ箱内のパスが一覧表示され、大量のファイルでも一目で元の場所を把握できます。

操作時の注意点と発生しやすい問題への対処法

PowerShellスクリプトを使った作業では、いくつかの注意点があります。ここでは、特に発生しやすい問題とその対処法について解説します。

PowerShellスクリプトが実行できない場合

スクリプトを実行しようとした際に、「このシステムではスクリプトの実行が無効になっているため」といったエラーメッセージが表示されることがあります。

原因: PowerShellの実行ポリシーが「Restricted」などの制限された設定になっているためです。

対処法: 「PowerShellの実行ポリシーを確認・変更する」の手順に従い、実行ポリシーを「RemoteSigned」に変更してください。スクリプト実行後は、セキュリティのためポリシーを元に戻すことを忘れないでください。

元の場所が特定できないファイルがある場合

出力されたCSVファイルに、一部のファイルで「OriginalPath」が空白になっている、またはエラーが表示されることがあります。

原因: ごみ箱内のファイル情報が破損している、または特殊な条件下で削除されたファイルである可能性があります。また、スクリプトがアクセスできない隠しファイルやシステムファイルの場合もあります。

対処法: スクリプト内でエラーメッセージが出力されている場合は、その内容を確認してください。ほとんどのファイルで問題が発生する場合は、ごみ箱自体に何らかの不整合が起きている可能性もあります。その場合は、Windowsのシステムファイルチェッカーを実行するなどの対応も検討できます。

出力されるCSVファイルが見つからない場合

スクリプトの実行が完了したにもかかわらず、デスクトップに「RecycleBinOriginalPaths.csv」が見つからないことがあります。

原因: スクリプトの実行に失敗しているか、出力先パスが誤っている可能性があります。または、セキュリティソフトウェアがファイルの作成をブロックしている可能性も考えられます。

対処法: PowerShellウィンドウにエラーメッセージが表示されていないか確認してください。スクリプト内のExport-Csv -Pathの部分を確認し、出力先パスが正しいか、書き込み権限がある場所かを確認します。一時的にセキュリティソフトウェアを無効にして再試行することも検討できますが、その際は十分な注意が必要です。

ADVERTISEMENT

ごみ箱ファイルの元の場所を確認する2つの方法の比較

ごみ箱に送られたファイルの元の場所を確認する方法はいくつかあります。ここでは、手動でプロパティを確認する方法と、PowerShellスクリプトで一括出力する方法を比較します。

項目 手動でプロパティを確認する方法 PowerShellスクリプトで一括出力する方法
対象ファイル数 少数のファイル 大量のファイル
作業効率 低い(1ファイルずつ確認が必要) 高い(一度にすべての情報を取得)
必要なスキル Windowsの基本的な操作 PowerShellの基本的な知識
出力形式 なし(目視確認のみ) CSVファイルに出力
データの再利用性 低い 高い(CSVファイルを編集・分析可能)

まとめ

この記事で解説したPowerShellスクリプトを使用することで、Windowsのごみ箱に送られた大量のファイルの元の場所を効率的に特定し、リストとして出力できるようになります。

手作業での確認に比べて大幅な時間短縮が可能となり、ごみ箱の整理や必要なファイルの復元作業がスムーズに進みます。

この方法を応用すれば、他のシステム管理作業においてもPowerShellスクリプトを活用できる場面があるでしょう。

ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。