2014-05-13 :-(
_ 午後
1300 HDMIがどうのこうの
_ 右クリックで今日の日付のフォルダを作成する
やってるひとが居たんだが Windows - 右クリックメニューの新規作成から今日の日付フォルダーを一発で作れるようにする - Qiita
レジストリの Command のデータがよく分からん。
cmd /c md "%1..%%date:~-10,4%%%%date:~-5,2%%%%date:~-2,2%%"
たとえば
C:\home
というフォルダで右クリック - 新規作成 - フォルダー やると
C:\home\新規 フォルダー(yyyyMMdd形式).aaaafolder_yyyyMMdd..20140512
というフォルダが作成される。
%1 は cmd.exe への引数であり
C:\home\新規 フォルダー(yyyyMMdd形式).aaaafolder_yyyyMMdd
が渡されるんだが、じゃあ %1 を展開しようとして
cmd /c %~dp1
とやっても %~dp1 が "%~dp1" として処理されてしまう。%1 が展開されない。( basename と同じことをやろうとしている )
どうにも解決できないので以下のようにして exe を作成しておいてレジストリの Command からそれを呼び出して回避した。うーん。
C#
ToString のパス区切りはバックスラッシュじゃなくてスラッシュでもいいのかというかバックスラッシュが指定できない。( \\MM にすると \M と解釈されたうえに無視された )
class Program { static private String Today() { DateTime d = DateTime.Today; String today = d.ToString("yyyy/MM/dd"); return today; } static void Main(string[] args) { if (args.Length == 0) { return; } String basedir = Path.GetDirectoryName(args[0]); if (Directory.Exists(basedir) == false) { Console.WriteLine("ディレクトリを指定してね"); return; } String today = Today(); String path = Path.Combine(basedir, today); Console.WriteLine("create {0}", path); Directory.CreateDirectory(path); } }
Command のデータはこんな感じ。
cmd /c C:\mkdir-today.exe %1
実行すると
C:\home\2014\05\13
こういうふうに作成される。