格式化ping成功和失败的输出

时间:2019-08-29 16:53:57

标签: windows batch-file

我试图让ping命令输出成功和失败以及所花费的时间。

我尝试使用'if errorlevel 1'失败

这是我当前的代码

@echo off
set /p IP=IP: 
:top
for /F "tokens=7 delims==< " %%A in ('ping -n 1 %IP% ^| find "TTL"') do (
    if errorlevel 1 ( echo Failed>> output.txt) else ( echo Successful! Time=%%A>> output.txt )
)
goto top

我想要此脚本执行的操作是在ping输出成功“ Successful!Time =“上,在ping输出不成功“ Failed”上。

但是它实际上是在将成功的ping置于毫无问题的状态,但是冻结了失败的ping。

1 个答案:

答案 0 :(得分:0)

ErrorLevel将不会显示ping / find命令行的返回错误值,因为它是由for /F在新的{{3}中执行的}实例。

改为执行以下操作:

@echo off
set /P IP="IP: "
>> "output.txt" (
    ping -n 1 %IP% | > "ttl.tmp" find "TTL=" && (
        for /F "usebackq tokens=5* delims=:<=> " %%A in ("ttl.tmp") do @echo Successful! %%B
    ) || (
        echo Failed
    )
    del "ttl.tmp"
)

cmd构成条件执行操作符,它们对find命令的&& and || symbols做出反应。 find的输出被写入一个临时文件,然后由另一个exit code读取并解析(只需根据需要编辑tokens=delims=)。