想做个检查局域网都有哪些机器开着的批处理 先做了个这样的 @echo offfor /l %%a in (2,1,254) do (echo 192.168.0.%%aping 192.168.0.%%a /n 1 |find "TTL"&&(echo 192.168.0.%%a >>result.dat))goto :eof复制代码发现速度太慢了 后来又改成这样的 @echo offfor /l %%a in (2,1,254) do (echo 192.168.0.%%aping 127.0.0.1 -n 1start /min cmd /c "ping 192.168.0.%%a /n 1 |find "TTL"&&(echo 192.168.0.%%a >>d:\result.txt)")goto :eof复制代码使用多线程的 发现这样开的窗口太多了 加个 ping 127.0.0.1 -n 1是因为怕开的太快机器响应不过来 但还是觉得进程太多了 有没有其他更好的办法实现这个功能 在网上找了下 没发现其他批处理的实现多线程的方法 再附加个问题: 批处理对双引号是怎么判断的,比如这句 start /min cmd /c "ping 192.168.0.%%a /n 1 |find "TTL"&&(echo 192.168.0.%%a >>d:\result.txt)" 这句可以正确把引号配对运行 但为什么程序就不会认为是前面一对引号,后面一对引号 为什么可以正确的认识是两对引号嵌套呢 start /min cmd /c "ping 192.168.0.%%a /n 1 |find "TTL"&&(echo 192.168.0.%%a >>d:\result.txt)" start /min cmd /c "ping 192.168.0.%%a /n 1 |find "TTL"&&(echo 192.168.0.%%a >>d:\result.txt)" [ 本帖最后由 stuqx 于 2009-6-26 16:31 编辑 ] |
|