Cmd 命令提示符编程批处理
我想创建一个批处理文件到平安IP地址,如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
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%
使用Parseping 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%