ファイルが増えてくると、フォルダー内が雑然とし、目的のファイルを探すのに時間がかかるようになります。
そのような場合、PowerShellを使用して「更新日」や「作成日」ごとにファイルを自動で整理すると、管理が非常に楽になります。
この記事では、PowerShellを使ってファイルを日付別フォルダーへ自動整理する基本的な方法を、順を追って解説します。

目次
事前に理解しておきたいポイント
PowerShellでファイルを日付別に整理する場合、主に以下の情報を利用します。
- LastWriteTime(最終更新日時)
- CreationTime(作成日時)
どちらを基準にするかは用途によって異なりますが、業務用途では「最終更新日時」を使うケースが多く見られます。
本記事では、最終更新日時を基準とした例を紹介します。
日付別フォルダーへ整理する基本スクリプト
以下は、指定したフォルダー内のファイルを「年-月」単位のフォルダーに自動で移動する例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$sourceDir = "C:\Temp\Source" $targetDir = "C:\Temp\Archive" Get-ChildItem $sourceDir -File | ForEach-Object { $date = $_.LastWriteTime.ToString("yyyy-MM") $destPath = Join-Path $targetDir $date if (-not (Test-Path $destPath)) { New-Item -Path $destPath -ItemType Directory | Out-Null } Move-Item $_.FullName $destPath } |
スクリプトの処理内容を解説
このスクリプトでは、以下の処理を順番に行っています。
- 整理対象フォルダーと移動先フォルダーを指定
- 対象フォルダー内のファイルを取得
- ファイルの最終更新日時から「yyyy-MM」形式の文字列を生成
- 日付フォルダーが存在しなければ作成
- ファイルを該当フォルダーへ移動
フォルダー名を「yyyy-MM-dd」に変更すれば、日付単位での整理も可能です。
作成日を基準に整理したい場合
作成日を使いたい場合は、以下の部分を変更します。
|
1 |
$date = $_.CreationTime.ToString("yyyy-MM") |
業務要件によっては、ログファイルは作成日、資料は更新日といった使い分けも有効です。
実行時の注意点
- 事前にテスト用フォルダーで動作確認を行ってください
- 同名ファイルが存在する場合、エラーが発生する可能性があります
- 上書きが必要な場合は、Move-Item に -Force を付与してください
|
1 |
Move-Item $_.FullName $destPath -Force |
定期的に自動実行したい場合
このスクリプトは、Windows タスク スケジューラに登録することで、定期実行が可能です。
- 毎日夜間に整理
- 週次でログをアーカイブ
- 月初に前月分を整理
といった運用にも対応できます。
まとめ
PowerShellを使えば、ファイル整理を手作業で行う必要はありません。
日付情報を活用することで、再現性が高く、運用しやすい整理が可能になります。
まずは小規模なフォルダーで試し、問題がなければ本番環境へ適用することをおすすめします。
