スポンサーリンク

BATで,実行結果の出力ログの保存先を,現在日時つきファイルにリダイレクトするサンプルコード

BATで,コマンドの実行結果をログに保存する時に,
ログのファイル名に現在日時を含める。

@echo off

SET hour_with_space=%time:~0,2%
SET timestamp=%date:~0,4%_%date:~5,2%%date:~8,2%_%hour_with_space: =0%%time:~3,2%

記録したいコマンド > log\out_%~n0_%timestamp%.log

pause

よく使うコードの雛形だ。


注意点として,timeで時を取得すると,0字から9時の間は
先頭の1文字が空白になるので注意。
0埋め(空白を0で置換)する必要がある。

Windows TIPS:バッチ・ファイル中で日付をファイル名に使用する - @IT
http://www.atmarkit.co.jp/ait/article...

  • 不具合を防ぐためには、time変数に含まれる空白文字を、最初に数字の0に置き換えておけばよいだろう。変数の置換は先の表にあるように、「%V:s1=s2%」とすればよい。ここでs1には空白1文字を、s2には「0」を指定する。


DOSバッチで日付・時刻の取得 - つれづれ日記
http://d.hatena.ne.jp/ymaru/20071123/p1

  • %time% がちょっと曲者です。 %time% は、 20:00 など時間が二桁の場合は良いのですが、 2:00 など時間が 一桁の場合は ' 2:00' という半角スペース付きで返してくれます。

関連記事:

「カレントフォルダのバックアップを取得・保存するバッチ」のソースコード。たった数行のBATで強力なバックアップが可能
http://computer-technology.hateblo.jp/entry/20150116/p1


バッチファイルで,Windowsの電源をスリープ(スタンバイ)に切り替え
http://computer-technology.hateblo.jp/entry/20140524/p1


BATとWSHのコードを1ファイルに混在させるためのshebang記法(複雑なバッチを1ファイルで実現)
http://computer-technology.hateblo.jp/entry/20131025/p1


自動的にWiFiに再接続するバッチ。ネットワークを無効化後,無線LANを有効化するコマンド
http://computer-technology.hateblo.jp/entry/20140917/p1