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

[其他] [已解决]请教如何实现批处理自动延迟关闭

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方法来解决,但是搜索了下,看不太懂,不知道有没有简单的方法
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

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

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

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

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

TOP

我正需要这个对付空IP的方法能说明白原理下吗
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

本帖最后由 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

TOP

返回列表