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

[数值计算] 如何给批处理加入执行时的时间控制?

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的电脑名字!请问该怎么修改呢?

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!
)
)

TOP

回复 8楼 的帖子

如果不要获取信息的IP,你不知道在延时后面再加一个taskkill /f /im nbtstat.exe吗
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

原帖由 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 编辑 ]

TOP

我想改成的是单个IP如果5秒没反映的话就跳过这个IP~~在host.txt里获取下一行IP继续工作!

TOP

呃……
好像没有什么办法可以控制单个语句的执行时间,要不是试试,所有的语句都延时一秒执行?
  1. for /f %%i in (host.txt) do (
  2.     start /b nbtstat.exe -a %%i
  3.     ping -n 1 127.1>nul
  4. )
复制代码

[ 本帖最后由 jsj30651 于 2009-3-7 12:41 编辑 ]

TOP

for /f %%i in (host.txt) do start /b nbtstat.exe -a %%i
直接卡死了。。。

[ 本帖最后由 zss427607 于 2009-3-7 12:38 编辑 ]

TOP

那你在前面加上
  1. start /b
复制代码
采用异步操作试试
代码变成
  1. start /b nbtstat.exe -a 123.123.123.123
复制代码
最好延时1秒左右执行下一步操作,因为如果IP范围太大可能会很卡。

[ 本帖最后由 jsj30651 于 2009-3-7 12:30 编辑 ]

TOP

恩~~是中断当前这个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 编辑 ]

TOP

ping -n 5 127.0.1>nul
的作用是延时5秒执行下一个命令
你的意思应该是判断执行单个命令的时间,如果超过5秒就中断吧?

TOP

返回列表