![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-11 14:32 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何跳过没有响应的扫描? |
| 可打印版本 856 / 11 |
| 第1楼 pzf2008 | 发表于 2009-03-02 04:33 |
| 新手上路 发帖 13 积分 16 | |
|
如何跳过没有响应的扫描? 用一个命令行下的扫描工具scan.exe对文本文件123.txt中的IP列表进行逐个扫描,批处理的代码如下:
@for /f %%i in (123.txt) do scan %%i 有的IP很快就扫描完毕,但是有的IP会没有响应,使得命令执行很慢。要实现不管目标IP是否有响应,每个IP均在20秒内扫描完成,然后跳到下一个IP。如何修改代码呢?请各位指点高明! |
|
| 第2楼 pzf2008 | 发表于 2009-03-02 21:56 |
| 新手上路 发帖 13 积分 16 | |
|
到现在还没有高人来指点啊?可能是我没说清楚吧!
我的意思就是:每次在执行命令后,加一个时间控制,如20秒钟,20秒钟之后,直接执行下一个循环的命令。怎么实现呢? [ Last edited by pzf2008 on 2009-3-2 at 22:33 ] |
|
| 第3楼 netbenton | 发表于 2009-03-03 01:21 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
for 调用scan.exe时,是把所有的控制权都交给scan.exe 了的,不可以中途打断的
你看看你的scan.exe它有没有定时的功能吧 |
|
| 第4楼 pzf2008 | 发表于 2009-03-03 03:55 |
| 新手上路 发帖 13 积分 16 | |
|
scan.exe相当于一个DOS下的命令行程序,就像dir等命令一样,没有定时功能。
我想实现对每个IP执行scan命令时,如果时间超过20秒钟,就自动跳到下一个循环执行。 或者,实现如下的键盘功能: 扫描一个IP超过20秒钟后,就用代码实现按下键盘的"Ctrl + c",然后按下"N",不取消该批处理命令,并继续执行下一条命令。 可否用代码模拟实现? |
|
| 第5楼 yishanju | 发表于 2009-03-03 06:24 |
| 银牌会员 发帖 1,357 积分 1,488 | |
|
扫描前先PING ,PING 不通 的IP 不扫描
这样可以不 |
|
| 第6楼 pzf2008 | 发表于 2009-03-03 10:56 |
| 新手上路 发帖 13 积分 16 | |
|
不行!这个scan程序是和ping命令的原理不一样! 还是得用代码来取消失去响应的命令,并跳到下一循环。
[ Last edited by pzf2008 on 2009-3-3 at 21:58 ] |
|
| 第7楼 pzf2008 | 发表于 2009-03-03 22:11 |
| 新手上路 发帖 13 积分 16 | |
|
也就是说,如果有以下批处理命令:
dir c: dir d: dir e: dir f: dir g: 假设每个磁盘驱动器上的文件有1亿个,dir命令要执行很久,要实现执行每条dir命令20秒钟后,取消该条命令的执行,相当于按下键盘的"Ctrl + c",然后再按下"N",跳到下一条dir命令继续执行。 实现这样的功能,要在中间插入什么代码呢? |
|
| 第8楼 yishanju | 发表于 2009-03-04 00:24 |
| 银牌会员 发帖 1,357 积分 1,488 | |
|
3楼已经说明方向了
自己看看SCAN的帮助 或者传一份scan 上来看看 别把木马后门-之类传上来就行 |
|
| 第9楼 netbenton | 发表于 2009-03-04 02:23 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
楼主试试这个行吗? @echo off
echo.@echo off>%~n0scan.bat echo.title %%1%%2>>%~n0scan.bat echo.scan %%2>>%~n0scan.bat echo.echo.ok>>%~n0scan.bat echo.title bentonok>>%~n0scan.bat echo.pause>>%~n0scan.bat for /f %%i in (bbb.txt) do call :sub %%i del /q %~n0scan.bat goto :eof :sub start %~n0scan.bat benton %1 for /f "tokens=2" %%a in ('TASKLIST /FI "WINDOWTITLE eq benton%1*" /fo "table" /nh') do set pid=%%a set n=0 :lp set/a n+=1 if %n% gtr 20 goto :close ping 127.1 -n 1 >nul for /f "tokens=9*" %%a in ('TASKLIST /FI "pid eq %pid%" /v /nh') do echo.%%~nxb&if "%%~nxb"=="benton%1" goto :lp :close rem TASKkill /FI "pid eq %pid%" TASKkill /FI "WINDOWTITLE eq benton*" >nul goto :eof [ Last edited by netbenton on 2009-3-4 at 00:27 ] |
|
| 第10楼 netbenton | 发表于 2009-03-04 02:35 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
这个雅观一点 @echo off
echo.@echo off>%~n0scan.bat echo.title %%1%%2>>%~n0scan.bat echo.scan %%2>>%~n0scan.bat echo.title bentonok>>%~n0scan.bat echo.pause>>%~n0scan.bat for /f %%i in (123.txt) do call :sub %%i del /q %~n0scan.bat echo.scan finish pause goto :eof :sub echo.scan %1 start /min %~n0scan.bat benton %1 (for /f "tokens=2" %%a in ('TASKLIST /FI "WINDOWTITLE eq benton%1*" /fo "table" /nh') do set pid=%%a)2>nul set n=0 :lp set/a n+=1 if %n% gtr 20 goto :close ping 127.1 -n 1 >nul (for /f "tokens=9*" %%a in ('TASKLIST /FI "pid eq %pid%" /v /nh') do if "%%~nxb"=="benton%1" goto :lp)2>nul :close TASKkill /FI "WINDOWTITLE eq benton*" >nul goto :eof [ Last edited by netbenton on 2009-3-5 at 07:48 ] |
|
| 第11楼 pzf2008 | 发表于 2009-03-04 21:32 |
| 新手上路 发帖 13 积分 16 | |
|
To:netbenton netbenton的代码真如蝴蝶穿花,够深奥!可我测试后,不行啊,没有完成需要的操作。
执行时生成了一个名为"testscan.bat"的批处理文件,其内容如下: @echo off title %1%2 scan.exe %2 title bentonok pause 假如要实现7楼描述的需求,代码应该怎么写呢? [ Last edited by pzf2008 on 2009-3-4 at 21:57 ] |
|
| 第12楼 netbenton | 发表于 2009-03-05 09:43 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
不好意思,原来是测试部分还没有去掉,改好了(10楼):
红色部分为IP列表文件, 绿色部分为你的scan.exe文件, 橙色部分的数字为延时,可以根据需要改 蓝色部分为scan.exe扫描时窗口最小化了,可以去掉。 ================================== 原理如下: 前面的echo部分产一个临时??scan.bat文件,用来调用scan.exe, 主批处理读取123.txt里面的IP列表,在新窗口调用临时产的??scan.bat 并给它一个字符串(用作标题)和一个IP,然后检测其是否完成(标题改变),或超时 是则关闭该窗口。再读取下一IP. . . 直到结束。 新窗口做的事情是: 把标题设置为主批给定的内容,再调用scan IP,完成后把标题设为OK。pause... 等主批来关闭。 [ Last edited by netbenton on 2009-3-5 at 08:09 ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |