ダウンロードフォルダが散らかる
仕事でもプライベートでもそうですが、インターネットやファイルサーバーからデータがPCに入ってくる場所は主にダウンロードフォルダ(Windowsでは %USERPROFILE%\Downloads
)です。わたしの場合はファイルの新規作成場所も主にダウンロードフォルダになっています。
すると、このフォルダは気を抜くとまたたく間に汚れていきます。
「汚れてきたらまとめてゴミ箱へ」としても良いのですが、とくに仕事で重要なファイルを誤って削除してしまったら大変です。「大事なファイルなんだからそんなことありえないだろう」とも思いますが、業務中は中断や割り込みタスクなどが発生するので、つい不注意でやってしまうことは十分ありえるのです。
どうやって整理・整頓するか
そのファイルが作られた目的から「本来いるべき場所」に格納するのが理想ですが、頭を使います。仕事で疲れた頭ではまともな判断ができるとは到底考えられません。
そこで、以下の方針をとることにしました。
- 日付ベースで管理する
- スクリプト処理で自動化する
- PC起動時に実行する
日付ベースで管理すれば、「だいたいあの頃作ったファイルだったな」で検索できるので発見率が上がりそうです。わたしは昔から日付フォルダをつくって管理してきた人間なので、親和性バッチリです。
また、仕事用のPCは一日の終わりには必ずシャットダウンするので、PC起動時にスクリプト処理で整理・整頓が行われれば「昨日作ったファイルどれだっけ」という状況でもすぐに対処できます。
:::message 時間で定期実行しても良いですが、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つのフォルダにまとまります。
画像は起動し続けているプライベート用のPCの結果なので、結構期間が空いてしまっています(そもそもダウンロードしたり新規作成するファイルがあまりないのも原因)が、毎日立ち上げるPCであれば日々生成されることとなります。空フォルダができるのを気にするようであれば、ファイル有無を確認して条件分岐をつけてもいいかもしれません。
おわりに
簡単なスクリプトで整理整頓されているっぽくなったので良かったと思っています。仕事などで、散らかったフォルダがプレゼンテーションを投影している画面などに映ると印象が悪いので、ダウンロードフォルダに限らず、デスクトップなどが汚れている方は真似してみてください。
以上