标题: [数值计算] 如何给批处理加入执行时的时间控制? [打印本页]
作者: zss427607 时间: 2009-3-7 11:57 标题: 如何给批处理加入执行时的时间控制?
for /f %%i in (host.txt) do nbtstat.exe -a %%i
现在这个可以直接在host.txt提取IP来执行获取IP的电脑名字了~不过我们学校的网络非常非常的慢(好多人在bt),经常10多秒都不执行下一行(卡在了nbtstat.exe -a 123.123.123.123 这个IP上了)~我想用加入ping -n 5 127.0.1>nul 执行5秒如果没有反映,就直接跳过这个IP!执行获取下个IP的电脑名字!请问该怎么修改呢?
作者: jsj30651 时间: 2009-3-7 12:13
的作用是延时5秒执行下一个命令
你的意思应该是判断执行单个命令的时间,如果超过5秒就中断吧?
作者: zss427607 时间: 2009-3-7 12:17
恩~~是中断当前这个IP的查询~~执行从host.txt获取下个IP的电脑名字!
C:\>nbtstat.exe -a 123.123.123.123
^C终止批处理操作吗(Y/N)? n
现在卡着了都要用手动Ctrl+c 然后输入n
才中断这个IP,获取下个IP~~
我现在就是想加入ping -n 5 127.0.1>nul 执行5秒如果没有反映,就直接跳过这个IP!
[ 本帖最后由 zss427607 于 2009-3-7 12:22 编辑 ]
作者: jsj30651 时间: 2009-3-7 12:27
那你在前面加上复制代码
采用异步操作试试
代码变成- start /b nbtstat.exe -a 123.123.123.123
复制代码
最好延时1秒左右执行下一步操作,因为如果IP范围太大可能会很卡。
[ 本帖最后由 jsj30651 于 2009-3-7 12:30 编辑 ]
作者: zss427607 时间: 2009-3-7 12:31
for /f %%i in (host.txt) do start /b nbtstat.exe -a %%i
直接卡死了。。。
[ 本帖最后由 zss427607 于 2009-3-7 12:38 编辑 ]
作者: jsj30651 时间: 2009-3-7 12:35
呃……
好像没有什么办法可以控制单个语句的执行时间,要不是试试,所有的语句都延时一秒执行?- for /f %%i in (host.txt) do (
- start /b nbtstat.exe -a %%i
- ping -n 1 127.1>nul
- )
复制代码
[ 本帖最后由 jsj30651 于 2009-3-7 12:41 编辑 ]
作者: zss427607 时间: 2009-3-7 12:39
我想改成的是单个IP如果5秒没反映的话就跳过这个IP~~在host.txt里获取下一行IP继续工作!
作者: zss427607 时间: 2009-3-7 13:02
原帖由 jsj30651 于 2009-3-7 12:35 发表
呃……
好像没有什么办法可以控制单个语句的执行时间,要不是试试,所有的语句都延时一秒执行?for /f %%i in (host.txt) do (
start /b nbtstat.exe -a %%i
ping -n 1 127.1>nul
)
楼主这个可以实现N秒后跳下行了,不过就是能获取信息的IP~~还没获取完就直接跳下行了哈哈!!比如tracert,,看来只能是控制秒数来实现了~~如果能实现单个语句的执行时间那就完美了!
[ 本帖最后由 zss427607 于 2009-3-7 13:12 编辑 ]
作者: zqz0012005 时间: 2009-3-7 13:46 标题: 回复 8楼 的帖子
如果不要获取信息的IP,你不知道在延时后面再加一个taskkill /f /im nbtstat.exe吗
作者: zss427607 时间: 2009-3-8 12:51
setlocal enabledelayedexpansion
for /f %%i in (host.txt) do (
set "ip=%%i"
ping !ip! -n 1 | find /i "Reply from"
if "errorlevel"=="1" (echo 此IP不通) else (
tracert !ip!
)
)
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |