[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理查找txt中符合条件的内容,并执行操作?

本帖最后由 滴血雄鹰 于 2020-6-16 21:41 编辑

查找txt中符合条件的内容,并执行操作?
  1. @echo off
  2. 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)
  3. 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)
  4. 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)
  5. 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)
  6. 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

回复 1# 滴血雄鹰
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%i in ('type "IP.txt"') do (
  4.     set /a _%%~ni+=1
  5.     if !_%%~ni! equ 3 (
  6.         start "" "C:\test\a.mp3"
  7.         goto :eof
  8.     )
  9. )
  10. start "" "IP.txt"
复制代码
1

评分人数

    • 滴血雄鹰: 谢谢!代码解决了我的问题!技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 滴血雄鹰 于 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)?

TOP

回复 3# 滴血雄鹰


这里下面再加一行
start "" "IP.txt"
endlocal
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 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

TOP

回复 5# 滴血雄鹰


    请把所有的 @echo off 删掉再执行,看看是哪一行出现了问题。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 滴血雄鹰 于 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

TOP

  1. @echo off
  2. :start
  3. setlocal enabledelayedexpansion
  4. for /f %%i in ('type "IP.txt"') do (
  5.     set /a _%%~ni+=1
  6.     if !_%%~ni! equ 3 (
  7.         endlocal
  8.         start "" "c:\test\a.mp3"
  9.         goto :time
  10.     )
  11. )
  12. endlocal
  13. start "" "IP.txt"
  14. :time
  15. ...
  16. goto :start
复制代码

TOP

回复 8# WHY


如果在IP.txt中,只要有一个IP地址,就打开某个声音文件报警(如打开a.mp3),反之继续运行代码。这个代码怎么改?是不是将 if !_%%~ni! equ 3 (  改成 if !_%%~ni! equ 1 (?

TOP

回复 9# 滴血雄鹰
  1. @echo off
  2. for /f %%i in ('type "IP.txt"') do (
  3.     start "" "C:\test\a.mp3"
  4.     goto :time
  5. )
  6. :time
  7. for /l %%i in (2,-1,0) do (
  8. ......
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 滴血雄鹰 于 2020-6-18 00:02 编辑

回复 10# Batcher


在IP.txt中,这个代码没有IP地址,也会打开某个声音文件报警(如打开a.mp3)。我修改了下8楼的代码,可以使用了。

TOP

返回列表