当ブログでコマンドプロンプトに関して以下記事を書きました。
Windowsコマンドプロンプト(バッチファイル)で日付取得するdateコマンドの使い方
コマンドプロンプトやバッチで実行結果をファイルに出力する簡単な方法
これらを使うと、日付入りのログファイルにコマンド実行結果を出力できるようになります。
ログを出力するシーンは随所に出てきますので必ず覚えておきましょう。
実際にコードを打ち込んで色々試してみてください。
※当記事のサンプルプログラムはコピペや改編することはOKで著作権は主張しませんが、実行によって障害等が発生した場合の責任は一切負いません。
Ping結果をYYYYMMDD.log(ログファイル)に出力する
早速実践例を。
IPアドレス:192.168.1.10(アドレスは皆様自身の環境に合わせて疎通できるものに置き換えて下さい。) にPingコマンドを発行し、結果をC:¥temp¥YYYYMMDD.logに出力するバッチファイルを作成することにします。
- Cドライブ(ドライブは任意でOK)にtempフォルダを作る
- C:¥temp 内にテキストファイルを作成して、test.bat と名称を変更する
- test.batをメモ帳等で開いて、以下内容をコピーして保存する
SET YYYY=%date:~0,4% SET MM=%date:~5,2% SET DD=%date:~8,2% Ping 192.168.1.10 > C:¥temp¥%YYYY%%MM%%DD%.log exit
関連記事:Windowsコマンドプロンプト(バッチファイル)で日付取得するdateコマンドの使い方
関連記事:コマンドプロンプトやバッチで実行結果をファイルに出力する簡単な方法
少しだけ補足しますと、SETコマンドは環境変数をセットするコマンドとなります。
バッチファイル実行時のみ有効となり、バッチが終了すると変数は破棄されます。(変数を破棄したくない場合はSETXコマンドを使います。)
保存したらtest.batをダブルクリックして実行してみましょう。
するとYYYYMMDD.log(例:20180921.log)がC:¥temp 内に出力されているはずです。
Ping 192.168.1.10 192.168.1.10 に ping を送信しています 32 バイトのデータ: 192.168.1.10 からの応答: バイト数 =32 時間 =2ms TTL=255 192.168.1.10 からの応答: バイト数 =32 時間 =3ms TTL=255 192.168.1.10 からの応答: バイト数 =32 時間 =1ms TTL=255 192.168.1.10 からの応答: バイト数 =32 時間 =2ms TTL=255 192.168.0.1のping統計: パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 2ms、最大 = 2ms、平均 = 2ms
どうですか?きちんと出力されて入ればOKです。
もし、batファイルを複数回実行し、結果を追記したい場合は出力コマンドを「>」から「>>」と置き換えれば追記モードとなります。
今回はPingの結果でしたが、他のプログラムに置き換えてももちろんOKですし、色々応用できますのでぜひ試してみてください。
コマンドプロンプト(バッチ)で実行することはメリットがある
ログファイルを出力するプログラムはコマンドプロンプト以外でももちろん出来ます。
他の言語プログラムで組めば。
先ほどのバッチは正直あまり綺麗でなく鈍くさいところもありますから、プログラム組んでやるってこともいることでしょう。
プログラムを組むということはプログラムが動く環境が必要であり、場合によってはモジュール等をインストールしないといけないじゃないですか。
でも、コマンドプロンプト(バッチ)の場合、OS=Windowsであれば基本的にはどこでも動きますし、メリットがあります。
- コンパイラーがいらない(実行環境がすでにある)
- 専用エディタもいらない(メモ帳で編集できる)
- バッチ化できて自動処理も楽にできる(タスクスケジューラ等で組めば)
- コードは鈍くさいが比較的簡単
極端な話、開発したことない人でも当記事を読めばサクッとできるぐらいなので、コマンドプロンプト(バッチ)で日付取得するのも悪くはないと考えます。
まとめ
処理結果をログファイルに出力する方法についてご案内しました。
バッチファイルで簡単にできますので、夜中に動かしてログを取っておくなどいろんな範囲で応用できる。
とにかく、色々触っていただき試してみてください。