🗂️

散らかり放題のファイルをそれっぽく整理する

2021/08/08に公開

ダウンロードフォルダが散らかる

仕事でもプライベートでもそうですが、インターネットやファイルサーバーからデータがPCに入ってくる場所は主にダウンロードフォルダ(Windowsでは %USERPROFILE%\Downloads)です。わたしの場合はファイルの新規作成場所も主にダウンロードフォルダになっています。

すると、このフォルダは気を抜くとまたたく間に汚れていきます。

「汚れてきたらまとめてゴミ箱へ」としても良いのですが、とくに仕事で重要なファイルを誤って削除してしまったら大変です。「大事なファイルなんだからそんなことありえないだろう」とも思いますが、業務中は中断や割り込みタスクなどが発生するので、つい不注意でやってしまうことは十分ありえるのです。

どうやって整理・整頓するか

そのファイルが作られた目的から「本来いるべき場所」に格納するのが理想ですが、頭を使います。仕事で疲れた頭ではまともな判断ができるとは到底考えられません。

そこで、以下の方針をとることにしました。

  • 日付ベースで管理する
  • スクリプト処理で自動化する
  • PC起動時に実行する

日付ベースで管理すれば、「だいたいあの頃作ったファイルだったな」で検索できるので発見率が上がりそうです。わたしは昔から日付フォルダをつくって管理してきた人間なので、親和性バッチリです。

また、仕事用のPCは一日の終わりには必ずシャットダウンするので、PC起動時にスクリプト処理で整理・整頓が行われれば「昨日作ったファイルどれだっけ」という状況でもすぐに対処できます。

実装

というわけで、わたしは職場もプライベートもWindowsを使用しているので、Powershellスクリプトを作成し、タスクスケジューラへ食わせることにしました。

実際に書いたスクリプトは以下のとおりです。

# 変数の定義
$yesterday = (Get-Date).AddDays(-1).ToString("yyyy-MM-dd")
$source_path = Join-Path $env:UserProfile Downloads
$destination_path = Join-Path $source_path $yesterday

# 前日日付名のフォルダを作成
New-Item $destination_path -ItemType Directory

# スクリプト実行日の00:00:00より前に作成されたファイルを
# 前日日付名のフォルダに格納
Get-ChildItem $source_path -Exclude ????-??-?? | 
Where-Object{ $_.CreationTime -le ( Get-Date 00:00:00 ).AddHours( 0 ) } |
Move-Item -destination $destination_path

こんな感じで前日までに生成されたファイルが1つのフォルダにまとまります。

おわりに

簡単なスクリプトで整理整頓されているっぽくなったので良かったと思っています。仕事などで、散らかったフォルダがプレゼンテーションを投影している画面などに映ると印象が悪いので、ダウンロードフォルダに限らず、デスクトップなどが汚れている方は真似してみてください。

以上

Discussion