2009年07月21日(火) [長年日記]
- 明日は皆既日食らしい。日食が起こる理屈を理解していない。
■ [windows] Windowsでファイルのタイムスタンプを更新する
Windowsでtouchコマンド相当のことを行いたかった。
- cmd.exe による擬似 touch(1) (yes > /dev/null)
に
copy ファイル名 +
でできるとあり、試すと確かにできた。が、何故これでうまくいくのかが分からない。
コマンドラインリファレンスでcopyコマンドを調べても、上の形式でうまくいく道理は理解できなかった。また、リファレンスには
ファイルの時刻と日付を変更する
ファイルを修正せずに現在の時刻と日付をファイルに割り当てる場合は、次の構文を使います。
copy /b Source+,,カンマは、Destination パラメータを省略することを示します。
という記述があった。これでもうまくいくけど、これは覚えられないなあ。
追記
- Windowsのコマンドプロンプトを便利に使うための10のミニテクニック (CodeZine)
という記事が出て、そこの「ファイルのタイムスタンプを変更する」に
copy /b file.ext+nul file.ext_ファイルをバイナリファイルとして扱う「/b」オプションと、ファイルにダミーの加工をするための「+nul」がポイントです。実行すると、「file.ext」と同じ内容の、ただしタイムスタンプ(更新日時)が現在時刻になっている「file.ext_」が生成されます。あとは必要に応じて、「file.ext」の削除と「file.ext_」のリネームを行ってください。
というやり方が書かれていた。こんな面倒なことする必要あるのかな?