找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26987|回复: 3

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

[复制链接]
发表于 2013-2-13 12:40:27 | 显示全部楼层 |阅读模式
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方法来解决,但是搜索了下,看不太懂,不知道有没有简单的方法

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2013-2-15 13:02:27 | 显示全部楼层
本帖最后由 wei 于 2013-2-15 17:28 编辑

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

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

自动延迟关闭的批处理也试过了,效果不好,有违初衷,比原来的还要吃资源,原先可以运行2000条批处理没问题,现在加上tasklist等等只能运行1000多条就内存出错了
发表于 2013-2-18 13:59:14 | 显示全部楼层
我正需要这个对付空IP的方法能说明白原理下吗
 楼主| 发表于 2013-2-18 17:12:42 | 显示全部楼层
本帖最后由 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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 03:11 , Processed in 0.019852 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表