【バッチファイル】Pingコマンドをバッチファイルで自動化する。成功しているか自動判定

スポンサーリンク




作業を自動化する
2022/1/29 バッチファイルの内容を修正しました。

サーバやネットワーク機器が通信可能な状態か確認する為に実行するPingコマンド。

ネットワークエンジニアに限らずIT系のエンジニアをやっていると必ず実行するコマンドになります。

今回はWindowsのPingをカンタンにする方法を説明します。

  • Pingをクリックで実行したい
  • Pingの結果を○×で確認したい
  • Pingの結果をファイルに出力したい

こんな事を考えている人に読んでもらいたいです。

スポンサーリンク

具体的なやり方

メモ帳を開いてこの後に説明するプログラムをコピペしてtext.batというファイル名で保存します。

後は、そのファイルをダブルクリックすればPingの実行とその結果をファイルとして保存できます。

プログラムといってもコピーするだけで使える簡単な内容になっているので安心してください。

バッチファイルを作って動かす

コピーするプログラム

この下に書いてあるプログラムをコピーしてメモ帳に貼り付けます。

3行目の192.168.50.1をPingを実行したいIPアドレスに変えてください。

ファイル名をtest.batとしてデスクトップへ保存します。

@echo off
rem Pingの宛先IPアドレスを指定します。ここにPingを実行したいIPアドレスに書き換えてください。
set IPADDRESS=192.168.50.1
  
rem 結果を出力するファイル名を指定します。
set FILENAME=Ping結果.log
  
rem 処理で使う文言などを指定します。
set COMMAND=ping %IPADDRESS%
set PACKET=パケット数: 送信 = 4、受信 = 4、損失 = 0 (0%% の損失)、
set RESPONSE=からの応答
set OKMESSAGE=Ping○
set NGMESSAGE=Ping×(個別に結果を確認してください。)
set RESPONSE_RESULT=NG
set PACKET_RESULT=NG
  
rem デスクトップへ「Ping結果.log」のファイルを作成。ファイルへPingコマンドを書き込む。
echo %COMMAND% > Ping結果.log
  
rem Pingコマンドを実行して、デスクトップの「Ping結果.log」へ結果を書き込む。
%COMMAND% >> Ping結果.log
  
rem 「Ping結果.log」の内容を1行ずつ読み込む。
for /f "delims=" %%i in (%FILENAME%) do (
    rem 応答状況の行か判断する。
    echo "%%i" | find "%RESPONSE%" > NUL
    if not errorlevel 1 (
        rem 応答が宛先IPアドレスか判断する。
        echo "%%i" | find "%IPADDRESS%" > NUL
        if not errorlevel 1 (
            rem OKフラグを立てる。
            set RESPONSE_RESULT=OK
        )
    )
  
    rem 全てのパケットが応答しているか判断する。
    echo "%%i" | find "%PACKET%" > NUL
    if not errorlevel 1 (
        rem OKフラグを立てる。
        set PACKET_RESULT=OK
    )
)
  
rem 両方OKの場合にPing○を表示する。
if %RESPONSE_RESULT%==OK (
    if %PACKET_RESULT%==OK (
        rem コマンドプロンプトの画面に「Ping○」を表示
        echo Ping○
        rem 「:ENDBAT」に移動する。
        goto ENDBAT
    )
)
rem コマンドプロンプトの画面に「Ping×」を表示する。
echo Ping×
  
:ENDBAT
  
rem 「続行するには何かキーを押してください...」を表示して入力待ちにします。
pause

この3行はファイルから読み込んだ行に探している文字が含まれているか確認するコードです。

  • echo “%%i” | find “%RESPONSE%” > NUL
  • echo “%%i” | find “%IPADDRESS%” > NUL
  • echo “%%i” | find “%PACKET%” > NUL

含まれている場合は「errorlevel」に0が設定され、「not errorlevel 1」と一致してif文の分岐処理を実行します。

ファイル名はtest.bat以外でもいいですがPing.batだとWindowsの都合でうまく動きません。

実行する

デスクトップのtest.batをダブルクリックします。

するとPing結果.logがデスクトップに作成されます。

ping 192.168.50.1 

192.168.50.1 に ping を送信しています 32 バイトのデータ:
192.168.50.1 からの応答: バイト数 =32 時間 =1ms TTL=64
192.168.50.1 からの応答: バイト数 =32 時間 =7ms TTL=64
192.168.50.1 からの応答: バイト数 =32 時間 =2ms TTL=64
192.168.50.1 からの応答: バイト数 =32 時間 =1ms TTL=64

192.168.50.1 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 1ms、最大 = 7ms、平均 = 2ms

これは後でエビデンスとして使えます。

最後にPingの結果を○×で表示します。

○×で表示するのでPingの確認に慣れてなくてもわかると思います。

確認後スペースを押して画面を閉じれば動きは終わりです。

文字化けする場合

保存した文字コードがUTF-8だと文字化けします。

ファイルを保存する形式をSJISにしたら治りました。

サクラエディタなどでファイルを保存する時に変更してください。

バッチファイルはどうやって覚える?

バッチファイルはコマンドプロンプトで使えるコマンドを複数組み合わせる事ができます。
最初はコピペの代わりにバッチファイルを作成すると思いますが、やりたい事が複雑になると都度ネットで調べたりして時間がかかってしまいます。
基礎から学ぶとやりたい事をどうかけばバッチファイルに落とし込めるかイメージが出来るようになります。

無料でやるならネット上の学習サイトを参考にするといいです。
こちらはバッチファイルの基礎から説明している無料のWEBサイトになります。

>>基礎から学べるWEBサイトを見てみる


基礎は分かったけど実際にどんなことができるのか、応用の幅を広げたいという方には、こちらの本をおすすめします。
プログラムのサンプルコードがあるので出来ることを見つけやすいです。
また、他のプログラムとは異なりかなりクセが強いのがバッチですが、回避用コードもあるのでエラーに強いコードを書けるようになります。



スポンサーリンク

やった事のまとめ

今回はPingコマンドを手動で実行する代わりに、プログラムのコピペでバッチファイルを作成しました。

  • Pingをクリックだけで実行できる
  • Pingの結果を○×で確認できる
  • Pingの結果をファイルに出力できる

バッチファイルによってこの3つの事が一気にできるようになりました。
他にもIPアドレスを覚えなくてもいいので、急いでいる時や資料がない時でもすぐにPingを実行することができてとても便利になります。
バッチファイルを取り入れて仕事を楽にしていきましょう。


FTPを自動実行するバッチファイルも作成しました。

タイトルとURLをコピーしました