本帖最后由 滴血雄鹰 于 2020-6-16 20:26 编辑
回复 6# Batcher
代码运行结果:
如果在IP.txt中,
低于3个IP,可以循环运行。
但如果有3个IP在IP.txt中,可以弹出报警(即运行a.mp3),但是BAT就退出了,不循环运行。
我修改了下面的红字,就可以循环了。
@echo off
:start
setlocal enabledelayedexpansion
for /f %%i in ('type "IP.txt"') do (
set /a _%%~ni+=1
if !_%%~ni! equ 3 (
start "" "C:\test\a.mp3"&&goto time
goto :eof
)
)
start "" "IP.txt"
:time
@echo off
for /l %%i in (2,-1,0) do (
cls
echo 等待%%i秒后,重新ping...
ping 127.1 -n 2 >nul
)
goto start
另外:(查找IP.txt中符合条件的内容,并执行操作?)
如果在IP.txt中,只要有一个IP地址,就打开某个声音文件报警(如打开a.mp3),反之继续运行代码。这个代码怎么改?是不是将 if !_%%~ni! equ 3 ( 改成 if !_%%~ni! equ 1 (?
@echo off
:start
for /L %%i in (2,1,4) do (ping -n 1 -w 40 192.168.11.%%i >nul && echo 192.168.11.%%i ping入成功 || echo 192.168.11.%%i ping入失败 && echo 192.168.11.%%i >IP.txt)
for /L %%i in (2,1,4) do (ping -n 1 -w 40 192.168.15.%%i >nul && echo 192.168.15.%%i ping入成功 || echo 192.168.15.%%i ping入失败 && echo 192.168.15.%%i >>IP.txt)
for /L %%i in (2,1,4) do (ping -n 1 -w 40 192.168.19.%%i >nul && echo 192.168.19.%%i ping入成功 || echo 192.168.19.%%i ping入失败 && echo 192.168.19.%%i >>IP.txt)
for /L %%i in (2,1,4) do (ping -n 1 -w 40 192.168.27.%%i >nul && echo 192.168.27.%%i ping入成功 || echo 192.168.27.%%i ping入失败 && echo 192.168.27.%%i >>IP.txt)
for /L %%i in (2,1,4) do (ping -n 1 -w 40 192.168.31.%%i >nul && echo 192.168.31.%%i ping入成功 || echo 192.168.31.%%i ping入失败 && echo 192.168.31.%%i >>IP.txt)
@echo off
setlocal enabledelayedexpansion
for /f %%i in ('type "IP.txt"') do (
set /a _%%~ni+=1
if !_%%~ni! equ 1 (
start "" "C:\test\a.mp3"&&goto time
goto :eof
)
)
:time
@echo off
for /l %%i in (2,-1,0) do (
cls
echo 等待%%i秒后,重新ping...
ping 127.1 -n 2 >nul
)
goto start |