Board logo

标题: [网络连接] ping代码运行报错的问题 [打印本页]

作者: drefong    时间: 2011-8-17 10:22     标题: ping代码运行报错的问题

本帖最后由 drefong 于 2011-8-17 10:35 编辑

一个ping网段的批处理,运行后报错,请大虾们指教
[code
@echo off
echo.
echo ------------------------------------------------------------------
echo 扫描中,请等待......
for /L %%i in (1,1,254) do ping 192.168.1.%%i | find "Reply" >> c:\ip.txt
pause
echo -------------------------------------------------------------------
echo.
echo 扫描已完成
echo 输出存活IP
for /F "token=3" %%i in (c:\ip.txt) do echo %%i
/code]
运行后提示
另一个程序正在使用此文件 进程无法访问
求指教
作者: CrLf    时间: 2011-8-17 10:29

本帖最后由 CrLf 于 2011-8-17 13:27 编辑

本贴标题修改后已基本符合版规,故删除原警告贴
作者: bingxing8000    时间: 2011-8-17 14:40

经测试。楼主的代码可以正常运行,没有出现楼主的情况。
为测试,对代码稍作了修改
  1. @echo off
  2. echo.
  3. echo ------------------------------------------------------------------
  4. echo 扫描中,请等待......
  5. for /L %%i in (1,1,30) do ping /n 1 192.168.1.%%i | find "Reply" >> c:\ip.txt
  6. pause
  7. echo -------------------------------------------------------------------
  8. echo.
  9. echo 扫描已完成
  10. echo 输出存活IP
  11. for /F "tokens=3" %%i in (c:\ip.txt) do echo %%i
  12. pause >nul
复制代码
提醒一下楼主 "token=3"写错了,是"tokens=3"
作者: CrLf    时间: 2011-8-17 17:32

典型的句柄占用文件的实例,在同一个时间点上,同一个文件只能被一个输出句柄指向,请百度信号灯。
解决方案是避免句柄之间的权利冲突:
  1. @echo off
  2. %1 %0 ::|find "Reply">>c:\ip.txt
  3. echo.
  4. echo ------------------------------------------------------------------
  5. echo 扫描中,请等待......
  6. for /L %%i in (1,1,254) do ping 192.168.1.%%i
  7. pause
  8. echo -------------------------------------------------------------------
  9. echo.
  10. echo 扫描已完成
  11. echo 输出存活IP
  12. for /F "token=3" %%i in (c:\ip.txt) do echo %%i
复制代码

作者: drefong    时间: 2011-8-18 15:21

感谢bingxing8000修正和CrLF的帮助,经过在公司机器上测试,发现有些机器出出现我上述情况,有些机器运行时候,有可能是安装桌面系统等软件导致冲突了,CrLF兄弟给的代码依然存在此问题,非常感谢两位。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2