中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 如何跳过没有响应的扫描? 上一主题 | 下一主题
pzf2008
新手上路





积分 16
发帖 13
注册 2008-12-8
状态 离线
『楼 主』:  如何跳过没有响应的扫描?

用一个命令行下的扫描工具scan.exe对文本文件123.txt中的IP列表进行逐个扫描,批处理的代码如下:
@for /f %%i in (123.txt) do scan %%i

有的IP很快就扫描完毕,但是有的IP会没有响应,使得命令执行很慢。要实现不管目标IP是否有响应,每个IP均在20秒内扫描完成,然后跳到下一个IP。如何修改代码呢?请各位指点高明!

2009-3-2 04:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pzf2008
新手上路





积分 16
发帖 13
注册 2008-12-8
状态 离线
『第 2 楼』:  

到现在还没有高人来指点啊?可能是我没说清楚吧!

我的意思就是:每次在执行命令后,加一个时间控制,如20秒钟,20秒钟之后,直接执行下一个循环的命令。怎么实现呢?

[ Last edited by pzf2008 on 2009-3-2 at 22:33 ]

2009-3-2 21:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 3 楼』:  

for 调用scan.exe时,是把所有的控制权都交给scan.exe 了的,不可以中途打断的
你看看你的scan.exe它有没有定时的功能吧



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-3-3 01:21
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
pzf2008
新手上路





积分 16
发帖 13
注册 2008-12-8
状态 离线
『第 4 楼』:  

scan.exe相当于一个DOS下的命令行程序,就像dir等命令一样,没有定时功能。

我想实现对每个IP执行scan命令时,如果时间超过20秒钟,就自动跳到下一个循环执行。
或者,实现如下的键盘功能:
扫描一个IP超过20秒钟后,就用代码实现按下键盘的"Ctrl + c",然后按下"N",不取消该批处理命令,并继续执行下一条命令。

可否用代码模拟实现?

2009-3-3 03:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 5 楼』:  

扫描前先PING ,PING 不通 的IP 不扫描
这样可以不




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2009-3-3 06:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pzf2008
新手上路





积分 16
发帖 13
注册 2008-12-8
状态 离线
『第 6 楼』:  

不行!这个scan程序是和ping命令的原理不一样! 还是得用代码来取消失去响应的命令,并跳到下一循环。

[ Last edited by pzf2008 on 2009-3-3 at 21:58 ]

2009-3-3 10:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pzf2008
新手上路





积分 16
发帖 13
注册 2008-12-8
状态 离线
『第 7 楼』:  

也就是说,如果有以下批处理命令:
dir c:
dir d:
dir e:
dir f:
dir g:

假设每个磁盘驱动器上的文件有1亿个,dir命令要执行很久,要实现执行每条dir命令20秒钟后,取消该条命令的执行,相当于按下键盘的"Ctrl + c",然后再按下"N",跳到下一条dir命令继续执行。

实现这样的功能,要在中间插入什么代码呢?

2009-3-3 22:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 8 楼』:  

3楼已经说明方向了
自己看看SCAN的帮助
或者传一份scan 上来看看
别把木马后门-之类传上来就行




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2009-3-4 00:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 9 楼』:  楼主试试这个行吗?

@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 ]



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-3-4 02:23
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 10 楼』:  这个雅观一点

@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 ]



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-3-4 02:35
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
pzf2008
新手上路





积分 16
发帖 13
注册 2008-12-8
状态 离线
『第 11 楼』:  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 ]

2009-3-4 21:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 12 楼』:  

不好意思,原来是测试部分还没有去掉,改好了(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 ]



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-3-5 09:43
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: