我试图让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。
答案 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=
)。