バッチファイルでpingが無限ループする原因と解決策

Qiitaに昔書いた記事を引っ越しました。

pingでサーバーとの疎通確認をしたかったので、簡単なバッチを作成。

@echo off
ping 127.0.0.1
if %ERRORLEVEL%==1 (
   echo "ping error"
)
pause
exit

すると何故か以下のように無限ループ…。 ping 127.0.0.1 ping 127.0.0.1 ping 127.0.0.1 ping 127.0.0.1 ping 127.0.0.1 ping 127.0.0.1

なぜこうなるかというと、ファイル名が「ping.bat」となっていたことが原因。 windows標準の設定ではコマンドの優先順位が .bat > .exe となっているため、ひたすら自分自身を参照することになるらしい。

ファイル名とコマンドを同じ名前にするのは避けましょう。