サイトアイコン スグブログ

【bat】バッチで日付や時間を取得する方法!初心者向けで簡単に取得可能

時間

バッチで日付や時間を取得できれば出来る事は多くなります。

例えば本日の日付と時間を組み合わせて、ログファイルやディレクトリを作成するなどです。

そうする事により日々の自動化しているバッチのログを取得できたりします。

管理人

初心者向けになるべく簡単な方法日付と時間を取得する方法をお伝えします。

windowsのプロンプトで使用できるbatやpythonやphpを使用して、業務効率化やWebサイトを作成しております。javaやシェルスクリプトなど、様々なプログラミングを行った実績ありの筆者です。

バッチにある環境変数を使用するだけで、簡単に日付と時間を取得できます。

バッチで日付や時間を取得する方法

バッチで日付時間取得する方法は、環境変数の「DATE」「TIME」を使用するだけです。

@echo off
echo 日付は:%date%
echo 時間は:%time%

バッチで変数を展開する場合は、変数の前後に「%」をつけます。

「date」を展開すると日付になり、「time」は時間となります。

バッチで文字列を結合するやり方は、特に何も指定せず並べて記述すればOKです!

このバッチファイルを実行してみます。

日付は:2023/11/27
時間は:16:43:08.63

現在の日付時間が取得できています。

実用編:バッチで日付と時間でログファイルを作成する。

では実際に現在の日付と時間を使用して、ログファイルを作成してみましょう!

@echo off
echo ログ内容 >> %date%%time%.log

バッチでファイルの作成のやり方はいくつもありますが、ログの中身もあるので今回はリダイレクト「>>」で行っています。

日付と時間をファイル名にするとエラーが出る原因と対処法

実行してみるとログファイルが出来ていません。

バッチファイルの最後に「pause」を入れて、状態を見てみます。

ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。

エラーの原因はwindowsでファイル名として使用できない文字があるからです。このままではファイルは作成できません。

ワンコ

現在の日付と時間を使用してログファイルなどを作成したいです。普通に取得したけど「/」や「:」や「.」が邪魔です。何とかならないですか?

解決策はファイルを作成するのに変数を少し変更するだけです。

日付と時間の出力を編集する

日付は:2023/11/27
時間は:16:43:08.63

日付は「/」が邪魔です。「/」を無に置き換えたいです。

簡単にできます。以下の様にバッチを変更してください。

%date:/=%

時間は「:」が邪魔で「.」も邪魔です。「.」以下はミリ秒なので不要です。

set time1=%time::=%
echo %time1:~0,6%

変数「time1」を作成して日付同様不要な「:」を無に置き換えして代入しています。

その変数の0番目から6文字取得しています。

バッチの変数を使用すれば、簡単に日付を取得したり、文字列の一部を抽出したり出来ます。その他にも沢山面白い事ができるので興味がある方は以下にまとめています。

この二つを使用してログファイルを出力してみます。

set time1=%time::=%
echo ログ内容 >> %date:/=%%time1:~0,6%.log

バッチファイルと同じディレクトリにログファイル「20231127171535.log」が出来たと思います。

バッチで文字列を結合するやり方は、そのまま文字列を並べるだけなので下のように簡単に変更できます。

set time1=%time::=%
echo ログ内容 >> %date:/=%-%time1:~0,6%.log

ログファイル「20231127-171715.log」が出来ています。

実用編:バッチで日付と時間でディレクトリを作成する。

では最後にディレクトリも作成してみます。

先程のログ出力の「echo ログ内容 >>」をディレクトリ作成する「mkdir」に変更するだけです。

mkdir %date:/=%-%time1:~0,6%

これで「20231127-172410」というディレクトリが作成されました!

モバイルバージョンを終了