0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【PowerShell】アプリの不要ファイル(tmp/log)を自動削除するスクリプト

0
Posted at

【PowerShell】アプリの不要ファイル(tmp/log)を自動削除するスクリプト

はじめに

PCを使用していると、アプリが生成した一時ファイルが知らない間に蓄積し、ディスク容量を圧迫することがあります。

Windowsには cleanmgr やWindows 11の「設定」→「システム」→「ストレージ」といった標準の不要ファイル削除ツールがありますが、これらは主に OSが管理する一時ファイルや古いシステムアップデート を対象としています。各アプリケーションが個別に生成したテンポラリファイルやログファイルは、対象外となるケースがほとんどです。

そこで、ユーザー領域(LOCALAPPDATA 配下)にあるアプリ固有の不要ファイルを削除するPowerShellスクリプトを作成しました。標準機能では掃除しきれない「かゆいところに手が届く」補完的なツールです。

私が自分のPCで初めて実行したときは、7GBもの不要データを削減できました!

動作環境

  • OS: Windows 11

機能

  • LOCALAPPDATA 配下のアプリ固有の不要ファイル(テンポラリ・ログ)を削除
  • アプリが使用中のファイルはスキップ(エラーなしで続行)

ソースコード

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 ==="

注意事項

  • Outlook / Teams / Edge などのアプリはなるべく停止してから実行してください。 使用中のファイルは削除されませんが、予期しないエラーを防ぐためです。
  • 障害が発生しているPCには使用しないでください。 ログファイルを削除すると、障害調査に必要なログ解析ができなくなります。

実行方法

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

補足1:「スクリプトの実行が無効」エラーが出た場合

まず以下を1回だけ実行してから、再度スクリプトを実行してください。

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

補足2:タスクスケジューラで自動実行する場合

Windows 11のタスクスケジューラから定期実行を設定できます。

  1. スタートメニューを右クリック →「コンピュータの管理」→「タスクスケジューラ」を選択
  2. 「操作(A)」→「タスクの作成(R)...」をクリック
  3. 「全般」タブの「名前」にタイトルを入力(例:_Clean_Temp
  4. 「トリガー」タブで実行タイミングを設定
  5. 「操作」タブで以下を設定
項目 入力値
プログラム/スクリプト powershell.exe
引数の追加 -ExecutionPolicy Bypass -File "C:\Scripts\Clean_temp.ps1"
開始(オプション) C:\Scripts\

技術的解説

コード解説

行番号 実行コード 解説
1 Write-Host "=== Clean Temp & Log Start ===" 開始メッセージをコンソールに表示。
3-4 Remove-Item "$env:LOCALAPPDATA\Temp\*" ... ユーザーの一時フォルダ内のすべてのファイルを強制的に再帰削除。使用中のファイルがあってもエラーを出さずに続行。
6-9 Get-ChildItem ... | Where-Object ... 更新日時が7日以上経過したログファイルを削除。
11-13 Get-ChildItem ... -Include *.tmp 拡張子が .tmp のファイルをすべて削除。
15 Write-Host "=== Completed ===" 完了メッセージをコンソールに表示。

ポイント

安全性の確保
Remove-Item "$env:LOCALAPPDATA\Temp\*" はワイルドカード(*)でフォルダの中身のみを削除しており、フォルダ自体は残ります。

ログ削除の範囲
-Recurse オプションにより、LOCALAPPDATA 直下だけでなく、すべてのサブフォルダ内のログも探索します。特定アプリの重要なログを誤って削除したくない場合は、パスを以下のように具体的に指定することで安全に運用できます。

"$env:LOCALAPPDATA\SomeApp\Logs"

その他の記事は BB研究所 で公開しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?