【1】はじめに

PCを使用していると一時ファイルが蓄積して知らない間にDiskの容量を圧迫しているケースがあると思います。
この様なケースに対応するためにWindowsにはcleanmgrという不要ファイルを管理/削除するツールがあります。 また、Windows11になって、「設定」→「システム」→「ストレージ」で不要ファイルの管理/削除が行えるようになりました。 これにより、不要ファイルによるDisk領域の圧迫を解消することができます。
しかしながら、cleanmgrなどのシステム標準機能は、主に「Windows OSそのものが管理する一時ファイル」や「古いシステムアップデート」を対象としています。 このため、各アプリケーションが個別に生成したテンポラリファイルやログファイルについてはケアしてません。
そこで、ユーザー領域(LOCALAPPDATA 配下)にあるアプリケーション固有の不要なファイルを削除するPowerShellスクリプトを作成しましたのでご紹介致します。
システム標準機能では、ユーザー領域(LOCALAPPDATA配下など)にあるアプリケーション固有の不要なファイルを完全には掃除しきれないことが多いため、 このスクリプトは「かゆいところに手が届く」補完的な役割を果たします。
ちなみに、私が自分のPCで、初めて本スクリプトを実行したときは、7GBもの不要データの削減ができました!

【2】動作環境

本スクリプトは、以下の環境で動作を確認しています。

【3】機能

本スクリプトは、以下の機能を有しています。

【4】ソースコード

適当なフォルダに、ファイル名「Clean_temp.ps1」で保存してください。

Write-Host "=== Clean Temp & Log Start ===" # Temp削除 Remove-Item "$env:LOCALAPPDATA\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue # log削除(7日以上前だけにする) Get-ChildItem "$env:LOCALAPPDATA" -Recurse -Include *.log | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) } | Remove-Item -Force -ErrorAction SilentlyContinue # tmp削除 Get-ChildItem "$env:LOCALAPPDATA" -Recurse -Include *.tmp | Remove-Item -Force -ErrorAction SilentlyContinue Write-Host "=== Completed ==="

【5】注意事項

また実運用にあたっては、以下の点にご注意ください。

【6】実行

PowerShellスクリプトは、以下の手順で実行できます。

  1. 「スタート」→「PowerShell」検索
  2. 右クリック → 管理者として実行
  3. cleanup_temp.ps1が存在するフォルダへ移動(例:"C:\Scripts"):
    cd C:\Scripts
  4. cleanup_temp.ps1を実行する:
    .\cleanup_temp.ps1

補足1.エラーについて

「スクリプトの実行が無効」などのエラーが出た場合は、以下を実行して下さい。

  1. まず以下のコマンドを1回だけ実行。
    Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
  2. その後、もう一度以下を実行。
    .\cleanup_temp.ps1

補足2.自動実行について

自動実行はWindows11の場合タイムスケジューラから設定できます

  1. タイムスケジューラ起動
    1. スタートメニューを右クリックして、「コンピュータの管理」をクリック
    2. 「タイムスケジューラ」を選択。
    3. 「操作(A)」→「タスクの作成(R)...」を選択
  2. 「全体」タブの「名前(M)」にタイトル入力(「_Clean_Temp」など)
  3. 「トリガー」タブの「新規(N)」をクリックして、運用に合わせてトリガー条件を設定する
  4. 「操作」タブの「新規(N)」をクリックして、以下を実施する
    1. プログラム/スクリプト(P)」に以下のように入力
      ※フルパス(例:「C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe」)でも良い
      powershell.exe
    2. 「引数の追加(オプション)(A)」に以下のように入力
      -ExecutionPolicy Bypass -File "C:\Scripts\cleanup_temp.ps1"
    3. 「開始(オプション)(T)」に以下のように入力
      C:\Scripts\

【7】技術的解説

本スクリプトは、ユーザーの環境(LOCALAPPDATA)に蓄積される一時ファイルや古いログを整理するためのものです。
以下各行の説明を記載します。

行番号 実行コード 解説
1 Write-Host "=== Clean Temp & Log Start ===" コンソール画面に、クリーンアップ作業を開始する旨のメッセージを表示。
3-4 # Temp削除
Remove-Item "$env:LOCALAPPDATA\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue
ユーザーの一時フォルダ内のすべてのファイルを強制的に再帰削除。削除できないファイル(使用中のもの等)があってもエラーを出さずに処理を続行。
6-9 # log削除(7日以上前だけにする)
Get-ChildItem ...
更新日時が7日以上経過したログファイルの削除。
11-13 # tmp削除
Get-ChildItem ...
拡張子が「.tmp」ファイルの削除。
15 Write-Host "=== Completed ===" コンソール画面に、すべての作業が完了したことを知らせるメッセージを表示。

ポイント


【改訂記録】
2026/06/13版:公開

[ホームへ戻る]