标题: [文本处理] [已解决]批处理查找txt中符合条件的内容,并执行操作? [打印本页]
作者: 滴血雄鹰 时间: 2020-6-16 08:40 标题: [已解决]批处理查找txt中符合条件的内容,并执行操作?
本帖最后由 滴血雄鹰 于 2020-6-16 21:41 编辑
查找txt中符合条件的内容,并执行操作?- @echo off
- 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)
复制代码
通过上面代码未Ping通的IP存入IP.txt
想要在上面的代码下面添加代码:(查找IP.txt中符合条件的内容,并执行操作?)
如果在IP.txt中,同一IP段(如出现下面形式192.168.11.X)有超过3个以上出现,就打开某个声音文件报警(如打开a.mp3),反之打开IP.txt。
192.168.11.2
192.168.11.3
192.168.11.4
作者: Batcher 时间: 2020-6-16 09:53
回复 1# 滴血雄鹰 - @echo off
- setlocal enabledelayedexpansion
- for /f %%i in ('type "IP.txt"') do (
- set /a _%%~ni+=1
- if !_%%~ni! equ 3 (
- start "" "C:\test\a.mp3"
- goto :eof
- )
- )
- start "" "IP.txt"
复制代码
作者: 滴血雄鹰 时间: 2020-6-16 12:43
本帖最后由 滴血雄鹰 于 2020-6-16 12:50 编辑
回复 2# Batcher
@echo off
:time
setlocal enabledelayedexpansion
for /f %%i in ('type "IP.txt"') do (
set /a _%%~ni+=1
if !_%%~ni! equ 3 (
start "" "C:\test\a.mp3"
goto :eof
)
)
start "" "IP.txt"
@echo off
for /l %%i in (2,-1,0) do (
cls
echo 等待%%i秒后,重新ping...
ping 127.1 -n 2 >nul
)
goto time
我加了红字的代码,在第3次自动运行时,就出错。即使IP.txt中只有一行IP,也会弹出报警(运行a.mp3)?
作者: Batcher 时间: 2020-6-16 14:42
回复 3# 滴血雄鹰
这里下面再加一行
start "" "IP.txt"
endlocal
作者: 滴血雄鹰 时间: 2020-6-16 15:11
回复 4# Batcher
加了endlocal后,下面代码无法运行了?
@echo off
for /l %%i in (2,-1,0) do (
cls
echo 等待%%i秒后,重新ping...
ping 127.1 -n 2 >nul
)
goto time
作者: Batcher 时间: 2020-6-16 17:00
回复 5# 滴血雄鹰
请把所有的 @echo off 删掉再执行,看看是哪一行出现了问题。
作者: 滴血雄鹰 时间: 2020-6-16 19:31
本帖最后由 滴血雄鹰 于 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
作者: WHY 时间: 2020-6-16 20:50
- @echo off
- :start
- setlocal enabledelayedexpansion
- for /f %%i in ('type "IP.txt"') do (
- set /a _%%~ni+=1
- if !_%%~ni! equ 3 (
- endlocal
- start "" "c:\test\a.mp3"
- goto :time
- )
- )
- endlocal
- start "" "IP.txt"
-
- :time
- ...
-
- goto :start
复制代码
作者: 滴血雄鹰 时间: 2020-6-16 21:30
回复 8# WHY
如果在IP.txt中,只要有一个IP地址,就打开某个声音文件报警(如打开a.mp3),反之继续运行代码。这个代码怎么改?是不是将 if !_%%~ni! equ 3 ( 改成 if !_%%~ni! equ 1 (?
作者: Batcher 时间: 2020-6-17 10:44
回复 9# 滴血雄鹰 - @echo off
- for /f %%i in ('type "IP.txt"') do (
- start "" "C:\test\a.mp3"
- goto :time
- )
-
- :time
- for /l %%i in (2,-1,0) do (
- ......
复制代码
作者: 滴血雄鹰 时间: 2020-6-17 12:08
本帖最后由 滴血雄鹰 于 2020-6-18 00:02 编辑
回复 10# Batcher
在IP.txt中,这个代码没有IP地址,也会打开某个声音文件报警(如打开a.mp3)。我修改了下8楼的代码,可以使用了。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |