批处理,循环ping一个ip,如果能通,则执行一个命令,不通则继续ping,循环10次?

自己写了个,但是不能正常运行,麻烦高手解决下。
set IP=192.168.0.1
cls & @echo off
for /L %%i in (1,1,10) do(
ping -n 2 %IP% |findstr /i "请求超时。">nul && echo 主机没有活动 || goto start)

:start
echo 开始调用tcp_client_win
start /min /b tcp_client_win.exe
exit

第1个回答  2020-04-26
不清楚你的实际文件/情况,仅以问题中的样例/说明为据
复制粘贴到记事本,另存为xx.bat,编码选ANSI@echo off
rem 根据ping指定ip的通断情况执行不同操作
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
set ip=192.168.0.1
set count=10
set n=1
:loop
echo;[%n%]Pinging……
ping -w 15 -n 2 %ip%|>nul find /i "TTL="&&(echo;OK&goto break)||(echo;NO)
set /a n+=1
if %n% gtr %count% goto end
goto loop
:break
start /min /b tcp_client_win.exe
:end
echo;%#% +%$%%$%/%@% %z%
pause
exit

本回答被提问者和网友采纳
第2个回答  2020-04-26
代码基本没什么问题
:start上面加一行exit,用来阻断for命令结束后,重复执行start里面的命令

建议在ping下面加个pause命令,看看每次执行情况,这样就知道问题所在了。
第3个回答  2020-04-28
for /L %%i in (1,1,10) do(
ping -n 2 %IP% |findstr /i "请求超时。">nul && echo 主机没有活动 || goto start)
改成
for /L %%i in (1,1,10) do ping -n 2 %IP% |findstr TTL goto start
goto :eof
相似回答