今日の日付のフォルダーをサクっと作る

エクスプローラーで今開いてるフォルダーの中に、サクっと今日の日付のフォルダーを作る」ということをやりたい。これはかなり昔からやりたいと思ってた。

エクスプローラーと言っても、「名前を付けて保存」のダイアログとか、デスクトップとか、いろいろある。がんばってそういうシェル拡張(右クリック拡張)を作るしかないかなーと思って、面倒そうだから放置してたんだけど、今日いいアイディアを思いついたので、さっそく作ってみた。

mkdirdate.js

import System;
import System.IO;
import System.Windows.Forms;
import System.Collections.Specialized;

(function(){
  var yyyymmdd = DateTime.Now.ToString('yyyyMMdd');
  var path = Path.Combine(Application.StartupPath, yyyymmdd);
  if(Directory.Exists(path)) Directory.Delete(path, true);
  Directory.CreateDirectory(path);
  var paths = new StringCollection();
  paths.Add(path);
  Clipboard.SetFileDropList(paths);
})();

こんなコードを書いた。これは拡張子jsだけどJScript.NETなので、コマンドプロンプトから以下のやり方でコンパイルする。

%windir%\Microsoft.NET\Framework\v2.0.50727\jsc /t:winexe /fast- mkdirdate.js

これで、mkdirdate.exeが生成されるはず。

使い方

mkdirdate.exeを、まずは適当なフォルダーに入れる(専用のフォルダーを作ることを激しく推奨)。そして、簡単に起動できるように、自分の好きなランチャーにでも登録しておく。

あとは、今日の日付でフォルダーを作りたいときに、そのランチャーから起動させるだけでOK。

起動させても、何も起こらないように見える。でも実は、クリップボードに今日の日付の名前の空っぽのフォルダーがコピーされているので、好きなところに貼り付ける(Ctrl + V)。クリップボードなので、ダイアログでもデスクトップでもどこでも使える。

注意

その代わり、クリップボードに元々入っていたデータは消える。でもみんなCLCLなどのクリップボード履歴ツールを使ってるだろうから問題ないよね。

仕組み

ソースコードを見ればわかると思うけど。

  1. まず、mkdirdate.exeを置いた場所に日付のフォルダを作る
  2. それをクリップボードにコピー

簡単だった。

「切り取り」ではなく「コピー」なのは、単純に切り取りのコードが書けなかっただけ。どう書くんだろう...。そのせいで、mkdirdate.exeの場所に作った日付のフォルダーがいつまでも残り続けてしまう。気になる人は、jsのコードを修正して、実行時に既存のフォルダーを全部消すようにすれば、いつも最後の1つだけしか残らないようになるはず。

それか、Windowsのtempフォルダーを取得して、その中に作ればいいのか。なるほどね。まあいいや。