Windowsで誤ってファイルをコピー・移動した場合にコピー先や移動先を調べる方法

ピンギー
質問: 操作ミスのファイル操作
うっかり操作して、ファイルをPCのどこかにコピーor移動したようです。慌ててキャンセルしたのですが、どのファイルをどこにコピーや移動したか調べる方法はありますか?

対応方法 (ローカルマシン内でのファイルコピーの場合)

次のコマンドを実行すると、Cドライブで、直近30分に作成したファイルを取得できます。

Cドライブの場合
$since = (Get-Date).AddMinutes(-30)

Get-ChildItem -Path C:\ -Recurse -File -Force -ErrorAction SilentlyContinue |
  Where-Object { $_.CreationTime -gt $since } |
  Sort-Object CreationTime -Descending |
  Select-Object CreationTime, Length, FullName |
  Export-Csv "created-files-log.csv" -NoTypeInformation -Encoding UTF8

パスを絞る場合
$since = (Get-Date).AddMinutes(-30)

Get-ChildItem -Path C:\ -Recurse -File -Force -ErrorAction SilentlyContinue |
  Where-Object {
    $_.CreationTime -gt $since -and
    $_.FullName -notlike "*\AppData\*" -and
    $_.FullName -notlike "*\Windows\*" -and
    $_.FullName -notlike "*\Program Files\*" -and
    $_.FullName -notlike "*\Program Files (x86)\*" -and
    $_.FullName -notlike "*\Cache\*" -and
    $_.FullName -notlike "*\Temp\*"
  } |
  Sort-Object CreationTime -Descending |
  Select-Object CreationTime, Length, FullName |
  Export-Csv "created-files-log.csv" -NoTypeInformation -Encoding UTF8

$env:USERPROFILEの場合
Get-ChildItem -Path $env:USERPROFILE -Recurse -File -Force -ErrorAction SilentlyContinue |
  Where-Object { $_.CreationTime -gt (Get-Date).AddMinutes(-30) } |
  Sort-Object CreationTime -Descending |
  Select-Object CreationTime, Length, FullName |
  Export-Csv "created-files-log.csv" -NoTypeInformation -Encoding UTF8


以下の形式で結果のファイルが出力されます。作成されたファイルが表示されるため、コピー先を調べることができます。

CreationTime,Length,FullName
2026/6/3 22:15,0,C:\Users\penta\AppData\Local\Temp\aea65edf-cda0-4ca4-82a1-93e0aef0db05.tmp
2026/6/3 22:15,0,C:\Users\penta\AppData\Local\Temp\d6243804-d0a0-4691-99ff-04ff347dbf7d.tmp
2026/6/3 22:15,0,C:\Users\penta\AppData\Local\Temp\776e0e84-c71c-45fc-8754-e307848edf08.tmp

対応方法 (ローカルマシンでのファイル移動の場合)

移動の場合は、ファイル作成されないため、手順が異なります。
次のコマンドを実行します。

Cドライブの場合
$since=(Get-Date).AddMinutes(-30); fsutil usn readjournal C: csv | Select-Object -Skip 7 | ConvertFrom-Csv | Where-Object { $_.'理由' -match '名前の変更' -and [datetime]$_.'タイム スタンプ' -gt $since } | Export-Csv "rename-log.csv" -NoTypeInformation -Encoding UTF8


実行すると、rename-log.csvファイルが出力されます。以下の形式で出力されます。 このCSVファイル内にファイル変更ログがあります。

USN	ファイル名	ファイル名の長さ	理由 #	理由	タイム スタンプ	ファイル属性 #	ファイル属性	ファイル ID	親ファイル ID	ソース情報 #	ソース情報	セキュリティ ID	メジャー バージョン	マイナー バージョン	レコードの長さ
38854160960	Preferences	22	0x00001000	名前の変更: 以前の名前	2026/6/3 11:08	0x00000020	アーカイブ	0000000000000000003800000003a826	0000000000000000000200000000a8a3	0x00000000	*なし*	0	3	0	104
38854161048	99cc1d63-8fd9-4712-984f-2052b039c31d.tmp	80	0x00002000	名前の変更: 新しい名前	2026/6/3 11:08	0x00000020	アーカイブ	0000000000000000003800000003a826	0000000000000000000200000000a8a3	0x00000000	*なし*	0	3	0	160
38854161192	acd2ae64-83f4-444c-8aac-cfd27efa87c7.tmp	80	0x00009800	セキュリティの変更 | 名前の変更: 以前の名前 | 基本情報の変更	2026/6/3 11:08	0x00000020	アーカイブ	0000000000000000001f00000003b352	0000000000000000000200000000a8a3	0x00000000	*なし*	0	3	0	160
38854161336	Preferences	22	0x0000a800	セキュリティの変更 | 名前の変更: 新しい名前 | 基本情報の変更	2026/6/3 11:08	0x00000020	アーカイブ	0000000000000000001f00000003b352	0000000000000000000200000000a8a3	0x00000000	*なし*	0	3	0	104


非常に数が多いため、CSVを表計算ソフトなどで開き、ファイル名や時刻で絞り込むと確認しやすくなります。 LLMなどの外部サービスを利用して内容を整理する場合は、ファイル名やパスに個人情報・機密情報が含まれていないか確認し、必要に応じてマスクしてから利用します。

メモ
NTFSには USN Journal という変更履歴のようなものがあり、ここには「リネーム」「移動」に近い痕跡が残ることがあります。以下のコマンドで、USN JournalをCSVでファイル出力できます。
Cドライブの場合
fsutil usn readjournal C: csv > filelog.csv


AuthorPortraitAlt
著者
iPentecの企画・分析担当。口が悪いのでなるべく寡黙でありたいと思っている。が、ついついしゃべってしまい、毎回墓穴を掘っている。
作成日: 2026-06-03