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

[网络连接] 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]
运行后提示
另一个程序正在使用此文件 进程无法访问
求指教
1

评分人数

    • CrLf: 请把超过一行的代码用 code 括起来PB -2

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

本贴标题修改后已基本符合版规,故删除原警告贴

TOP

经测试。楼主的代码可以正常运行,没有出现楼主的情况。
为测试,对代码稍作了修改
  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"
赞成“拿来主义”,但是鄙视“伸手党”

TOP

典型的句柄占用文件的实例,在同一个时间点上,同一个文件只能被一个输出句柄指向,请百度信号灯。
解决方案是避免句柄之间的权利冲突:
  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
复制代码

TOP

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

TOP

返回列表