cmd.exe による擬似 touch(1)

人様の計算機での話です。

保存時に mtime を編集前の時刻まで戻してしまうエディタがありまして、TortoiseSVN が変更を検出してくれず困っておりました。

Unix なら touch(1) してしまえば良いのですが、そこは素の Windows. そのようなコマンドは用意されておりません。

なにか解法はないかと Google でお伺いをたててたところ、以下の方法で空ファイルを作成できることがわかりました。

The solution to this delimia was to use the following dos command which will create an empty file:

copy /y nul file.txt
http://brett.batie.com/dosshell/touch-with-dos-commands/

これを応用して、以下のようにすることで mtime の変更(の様なこと)を行う事ができるようになりました。

copy /b /y nul + target.ext target.orig.ext
move /y target.orig.ext target.ext

本物の touch(1) には遠く及びませんが、よくある作業はこれで行えるかと。

難点を挙げれば、一度 copy しているのでその時間と容量が必要なことでしょうか。

通りすがりさんから簡便な方法を教えていただきました。 ありがとうございます :)

タイムスタンプのみ変更なら↓で十分では?

copy ファイル名 +

or

copy ファイル名+
http://d.hatena.ne.jp/elim/20081028/1225211305#c1227881513

擬似 sleep(1)

よく知られている技術ですが、localhost に対し回数を指定して ping を実行することで sleep(1) 代わりにすることができます。思い出したのでついでに書いておきます。

ping -n 10 localhost > nul