コマンドプロンプトのワンラナーでyyyyMMddHHmmss形式のタイムスタンプ文字列を表示する
これは、コマンドプロンプト(cmd.exe) Advent Calendar 2015 - Qiitaの13日目の記事です。
※Windows 10 Home 64bit 搭載のcmd.exeにて検証を行っています。
タイトルの通りです。
解
C:\Users\kunst>for /f "usebackq tokens=*" %i in (`echo %date:/=%%time::=%`) do @echo %~ni 20151213211021
解説
分解してみましょう。
C:\Users\kunst>echo %date% 2015/12/13 C:\Users\kunst>echo %date:/=% 20151213 C:\Users\kunst>echo %time% 21:11:10.04 C:\Users\kunst>echo %time::=% 211113.91 C:\Users\kunst>echo %date:/=%%time::=% 20151213211127.96
最後のワンライナーで、「yyyyMMddHHmmss」+小数点以下2桁のタイムスタンプ文字列が得られました。
この最後のワンライナーを、コマンドとしてfor文に渡します。
C:\Users\kunst>for /f "usebackq tokens=*" %i in (`echo %date:/=%%time::=%`) do @echo %i 20151213211309.75
さらにここから、
小数点以下2桁の数字を拡張子とみなして、ファイル名の部分だけを取り出すすことで、前半を切り離すことができます。
(詳しくは、コマンドプロンプトで読んでおくべき7つのHELP - その④「for /?」 - くんすとの備忘録 の「『%変数』の展開について」の項で取り上げています)
C:\Users\kunst>for /f "usebackq tokens=*" %i in (`echo %date:/=%%time::=%`) do @echo %~ni 20151213211514
以上。