Board logo

标题: [其他] [已解决]请教如何实现批处理自动延迟关闭 [打印本页]

作者: wei    时间: 2013-2-13 12:40     标题: [已解决]请教如何实现批处理自动延迟关闭

1.bat
for /l %%i in (0,1,255) do (start /min cmd /c 2.bat 192.168.0.%%i)

2.bat
nc -d %1 80<1.txt

(因为我运行1.bat,并行运行了多条批处理)希望2.bat里的内容运行2秒后自动关闭,而不管该批处理nc命令是否运行结束

无法用杀掉nc.exe或cmd.exe来解决,因为并行运行了多条

似乎有获取当前批处理的pid方法来解决,但是搜索了下,看不太懂,不知道有没有简单的方法
作者: wei    时间: 2013-2-15 13:02

本帖最后由 wei 于 2013-2-15 17:28 编辑

已解决
没从批处理的角度解决,继续使用原批处理
找人重编译了nc,运行2秒后自动退出

主要用于局域网上千个终端基于web页的调试和升级
一个网段差不多60个终端,ip不固定,懒得先获取终端ip的txt文本再用nc提交数据,还是现在这样快,只是原来遇到空ip的地址会等待很长时间,多网段并行运行机器受不了,现在到了2秒不管是否有回应就自动关闭

自动延迟关闭的批处理也试过了,效果不好,有违初衷,比原来的还要吃资源,原先可以运行2000条批处理没问题,现在加上tasklist等等只能运行1000多条就内存出错了
作者: mxxcgzxxx    时间: 2013-2-18 13:59

我正需要这个对付空IP的方法能说明白原理下吗
作者: wei    时间: 2013-2-18 17:12

本帖最后由 wei 于 2013-2-18 17:52 编辑

回复 3# mxxcgzxxx
传统的是先用ping或者扫描或者路由网关之类的直接拉张列表导成txt吧
我觉得太麻烦,太费时,而是直接对整个网段操作

不知道你用什么工具,我nc、ncat之类的都用过了,最后用编译版的nc 加参数q,延迟自动关闭(ncat也有send only的参数)
总之,对付空ip,要么设成只发送不接受,要么设成运行后1秒自动关闭(具体的1秒还是2秒,自己测试,必须有效终端要发送成功),一定要工具本身支持延迟关闭,用tasklist、taskkill获取当前pid并关闭的不用考虑,不合实际,太费资源了,因为会出现无数条tasklist的进程


并行运行的话,一个网段256个ip,20秒不到就可运行结束,经改进后可以保持进程数不增长以及不占内存(仍占cpu资源),原先全部进程超过1000个(另外感觉win7运行nc效率比xp低很多,还可能会卡住,我还把1楼的start /min换成start /b)

不支持延迟关闭的话,当然也可以逐个运行,256个ip根据机器性能,在30~45秒也能完成,比并行运行的要慢,但是对于cpu资源占用小很多(把具体的工具改名,比如nc1 nc2 nc3,可以充分利用cpu,并实现多网段的并行运行)
for /l %%i in (0,1,255) do for /l %%j in (0,1,255) do a 10.10.%%i.%%j
(也可以加start /b /wait,效果差不多)
a.bat
nc命令|nircmdc cmdwait 1 killprocess nc.exe




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