【bat】バッチファイルでネットワーク接続の有無を判定して処理を分岐させる方法

【bat】バッチファイルでネットワーク接続の有無を判定して処理を分岐させる方法 bat

バッチファイルでは、ネットワークに接続されているかどうかを判定し、それに応じて処理を切り替えることが可能です。本記事では、pingコマンドを利用してネットワーク接続を判定する基本的な方法と、条件分岐の実装例をご紹介します。

ネットワーク接続を判定するには?

バッチファイルでネットワーク接続をチェックするには、pingコマンドを使って外部のホスト(例:GoogleのDNSサーバー8.8.8.8など)に通信できるかを確認するのが一般的です。

ping -n 1 8.8.8.8 >nul

このコマンドは、1回だけ指定したIPアドレスへpingを実行し、結果を画面に表示しないようにしています(>nul)。

条件分岐の基本構文

pingの終了コードに応じてIF ERRORLEVELを使って分岐します。以下が基本の書き方です。

@echo off
ping -n 1 8.8.8.8 >nul
if errorlevel 1 (
  echo ネットワークに接続されていません。
  REM 接続されていない場合の処理
) else (
  echo ネットワークに接続されています。
  REM 接続されている場合の処理
)

使用例 接続されていれば同期処理、なければスキップ

以下は、ネットワークに接続されていればファイルを同期し、接続されていなければスキップする例です。

@echo off
ping -n 1 8.8.8.8 >nul
if errorlevel 1 (
  echo オフライン状態のため、同期処理をスキップします。
) else (
  echo オンライン状態です。同期処理を開始します。
  robocopy \\server\share C:\local\backup /MIR
)

注意点と補足

  • pingの宛先には安定して応答のあるサーバーを指定しましょう(例:8.8.8.8 や www.google.com)。
  • 社内ネットワークでの確認には、社内サーバーのIPやホスト名を使うとよいでしょう。
  • ERRORLEVELは大きい値から順に判定するのが基本ですが、今回の例では1で失敗、0で成功という単純な条件なので問題ありません。

まとめ

バッチファイルでも簡単にネットワークの接続状況を判定し、それに応じて処理を分けることができます。定期的なバックアップや更新処理を自動化したいときなどに活用してみてください。