プロが教えるわが家の防犯対策術!

以下のコードをサイトで見付けたのですが、
どんなipを指定しても全て正常が返ってきます。

@echo off
echo 192.168.0.1にPINGを実行します。

ping 192.168.0.1 -n 4
@if errorlevel 1 GOTO test1_NG
@if errorlevel 0 GOTO test1_OK
:test1_OK
echo.
echo ***************
echo テスト①正常終了
echo ***************
echo.
pause
GOTO END

:test1_NG
echo.
echo ***************
echo テスト①異常終了
echo ***************
echo.
pause
GOTO END

:END

コレではダメなのでしょうか。
なお、最終的にやりたいことは、
(全く分かっていないのですが)
結果を if then else の形式で参照したいのです。
以下のイメージです。

if %errorlevel% gtr 0 (
ok
) else (
ng
)

宜しくお願いします。

A 回答 (3件)

だめですね。


Windowsのpingの場合は、到達したかどうかをERRORLEVELでは判断できません。

ping 192.168.0.1 -n 4 | findstr TTL=
@if errorlevel 1 GOTO test1_NG
@GOTO test1_OK
    • good
    • 2
この回答へのお礼

有り難うございました。
解決しました。
pingそのものではerrorlevelが立たないのですね、
その結果のttlを診て判定、
納得です。
お世話になりました。
コレで先に進めます。

お礼日時:2021/01/14 06:06

試したら正しく判定していますね。


ping 3192.168.0.1 -n 4
で試してみてください。


または、下のように変更してはどうでしょうか
ping 192.168.0.1 -n 4 && GOTO test1_OK || GOTO test1_NG
    • good
    • 0
この回答へのお礼

有り難うございました。
3192なら確かにエラーでしょうね。

お礼日時:2021/01/14 06:05

gtrのとこ、equ 0 じゃないの?

    • good
    • 0
この回答へのお礼

有り難うございました。
ご指摘の箇所はイメージなので、深く考えていませんでしたが、
そのとおりですね。

お礼日時:2021/01/14 06:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A