くんすとの備忘録

IT系技術メモ

移転しました。

15秒後に自動的にリダイレクトします。

コマンドプロンプトのワンラナーで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

以上。