Cmd 命令提示符编程批处理

Cmd 命令提示符编程批处理,cmd,Cmd,我想创建一个批处理文件到平安IP地址,如1.30.200.3: Pinging 1.30.200.3 with 32 bytes of data: Reply from 1.30.200.3: bytes=32 time=28ms TTL=124 Reply from 1.30.200.3: bytes=32 time=28ms TTL=124 Reply from 1.30.200.3: bytes=32 time=27ms TTL=124 Reply from 1.30.200.3: byt

我想创建一个批处理文件到平安IP地址,如
1.30.200.3

Pinging 1.30.200.3 with 32 bytes of data:
Reply from 1.30.200.3: bytes=32 time=28ms TTL=124
Reply from 1.30.200.3: bytes=32 time=28ms TTL=124
Reply from 1.30.200.3: bytes=32 time=27ms TTL=124
Reply from 1.30.200.3: bytes=32 time=27ms TTL=124

Ping statistics for 1.30.200.3:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 27ms, Maximum = 28ms, Average = 27ms 
我需要询问
“Received”>=2
是否只键入一行,如下所示:

Reply from 1.30.200.3: bytes=32 time=28ms TTL=124
否则

键入收到的数量和“故障”

像这样输出 如果接收的数据包数大于等于2个

“从1.30.200.3回复:字节=32次=28ms TTL=124”

或者如果不大于等于2 像这样输出

“已接收=0失败(&F)”

另一个例子

wmic /append:"textfile.txt" path win32_pingstatus where "address='127.0.0.1' and responsetime >= 0 and statuscode is not null" get responsetime,timestamprecord,statuscode
寻求帮助-

wmic /?
wmic path Win32_PingStatus /?
wmic path Win32_PingStatus get /?
wmic format /?
wmic append /?
另请参见各种常数的含义

call :check www.google.com
call :check www.notexist.xxx
goto :eof

:check
ping %1>ping.tmp
for /f %%i in ('type ping.tmp^|find /c "TTL="') do set count=%%i
for /f "tokens=*" %%i in ('type ping.tmp^|find "TTL="') do set output=%%i
if %count% geq 2 (echo %output%) else (echo Received = %count% ^& Failure)
del ping.tmp

TTL=
比收到的
可靠得多(它独立于语言)(并且更容易解析)

您已经有了其他答案。基本上,此代码解析
ping
命令的输出。它被硬编码为任何英语Windows7输出。这应该被认为是脆弱的,因为它可能不适用于其他语言,也可能不适用于其他Windows版本

SETLOCAL ENABLEDELAYEDEXPANSION
SET EXITCODE=0

SET HOSTNAME=localhost
SET TEMP_FILE=%TEMP%\pingcount_!RANDOM!_!RANDOM!.tmp

ping>"%TEMP_FILE%" %HOSTNAME%
SET EXITCODE=%ERRORLEVEL%
IF %EXITCODE% NEQ 0 (
    ECHO host %HOSTNAME% not found
    GOTO TheEnd
)

SET REP_LINE=

FOR /F "usebackq skip=1 tokens=*" %%a IN (`type "%TEMP_FILE%"`) DO (
    IF "!REP_LINE!" EQU "" (SET REP_LINE=%%a)
)

FOR /F "usebackq tokens=1-7 delims=, " %%a IN (`FINDSTR /C:"Packets: Sent" "%TEMP_FILE%"`) DO (
    SET RCOUNT=%%g
)

IF %RCOUNT% GEQ 2 (
    ECHO %REP_LINE%
) ELSE (
    ECHO Received = %RCOUNT%, Failure
)

:TheEnd

IF EXIST "%TEMP_FILE%" (DEL "%TEMP_FILE%"
EXIT %EXITCODE%

使用Parse
ping 1.30.200.3 | find/i“数据包:发送”
命令。
SETLOCAL ENABLEDELAYEDEXPANSION
SET EXITCODE=0

SET HOSTNAME=localhost
SET TEMP_FILE=%TEMP%\pingcount_!RANDOM!_!RANDOM!.tmp

ping>"%TEMP_FILE%" %HOSTNAME%
SET EXITCODE=%ERRORLEVEL%
IF %EXITCODE% NEQ 0 (
    ECHO host %HOSTNAME% not found
    GOTO TheEnd
)

SET REP_LINE=

FOR /F "usebackq skip=1 tokens=*" %%a IN (`type "%TEMP_FILE%"`) DO (
    IF "!REP_LINE!" EQU "" (SET REP_LINE=%%a)
)

FOR /F "usebackq tokens=1-7 delims=, " %%a IN (`FINDSTR /C:"Packets: Sent" "%TEMP_FILE%"`) DO (
    SET RCOUNT=%%g
)

IF %RCOUNT% GEQ 2 (
    ECHO %REP_LINE%
) ELSE (
    ECHO Received = %RCOUNT%, Failure
)

:TheEnd

IF EXIST "%TEMP_FILE%" (DEL "%TEMP_FILE%"
EXIT %EXITCODE%