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

Windows 格式化ping成功和失败输出,windows,batch-file,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!

我正在尝试使用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
@echo关闭
设置/p IP=IP:
:顶部
对于/F“tokens=7 delims==<”%%A in('ping-n 1%IP%^查找“TTL”)do(
如果错误级别1(echo失败>>output.txt)或其他(echo成功!时间=%%A>>output.txt)
)
转到顶端
我希望此脚本在成功的ping输出“successful!Time=”上执行,在不成功的ping输出“Failed”上执行

但它实际上所做的是输出成功的ping没有问题,但它在失败的ping上冻结。

不会显示/命令行的返回错误值,因为它是由在新实例中执行的

改为这样做:

@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"
)
@echo关闭
设置/P IP=“IP:”
>>“output.txt”(
ping-n 1%IP%|>“ttl.tmp”查找“ttl=”&&(
对于/F“usebackq tokens=5*delims=:”(“ttl.tmp”)中的%%A执行@echo成功!%%B
) || (
回音失败
)
删除“ttl.tmp”
)

构成条件执行运算符,这些运算符在执行
find
命令时作出反应。
find
的输出被写入一个临时文件,然后由另一个临时文件读取和解析(只需根据您的需要编辑
tokens=
delims=

您是否尝试使用
[batch file]ping success failure
,因为这是一个相当常见的问题。@Compo我有但是,我还没有找到我一直在寻找的答案,因为他们不使用查找所用时间的for循环。@ashipfl我想知道是否有一种方法可以同时获得时间和TTL