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

[网络连接] 批处理如何让程序发现某个关键词时自动停止执行以下代码?

我做了个批处理程序,代码如下:      (我的意图并不是要显示局域网内的不活动主机,而是有其它用,请按要求给出代码,谢谢)
ping 127.0.0.1 -n 1
ping 127.0.0.2 -n 1
ping 127.0.0.3 -n 1
ping 127.0.0.4 -n 1
…………
…………
程序是这样一直往下的很多条,我想让程序实现这样的功能:如果输出结果中出现  Request timed out  时,程序停止往下执行,并且显示出执行结果中包含此关键词的那条命令。比如说:执行ping 127.0.0.4 -n 1这条命令时,结果是 Request timed out ,那么屏幕上显示出ping 127.0.0.4 -n 1。要实现这样的功能需要对程序做什么样的修改,请各位指教。

[ 本帖最后由 fenglin124 于 2010-3-25 21:07 编辑 ]

不知所言!!!!!!!!!!!!
有一种爱叫放弃

TOP

下面是用来临时刷出域内实际存在的那些IP的。
我觉得手法会类似。
当执行的结果出现 Lost=1 也就是失败的时候 不显示该地址
相反则显示那个地址。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%a in (1,1,250) do (
  4. for /f "tokens=*" %%b in ('ping 192.168.1.%%a -n 1 -l 1 -w 1 ^|find /i "Lost"') do (
  5.   set now=%%b
  6.   set "now=!now:*Lost=!"
  7.   if "!now:1=!"=="!now!" (echo 192.168.1.%%a is on line) else (echo 192.168.1.%%a=NO)
  8. )
  9. )
  10. exit
复制代码

[ 本帖最后由 523066680 于 2010-3-25 20:55 编辑 ]

TOP

这个代码烦了我很长时间了,希望各位帮我一下

TOP

不会吧 ,无视我的存在,一定是我理解错了题意。 我闪。

TOP

  1. @echo off
  2. for /l %%a in (1,1,255) do (
  3.     ping 127.0.0.%%a | find /i "Request timed out" >nul 2>&1 && echo ping 127.0.0.%%a
  4. )
复制代码

TOP

原帖由 bat007 于 2010-3-25 23:27 发表

请教楼上
@echo off
>nul 2>&1
)


这个2>&1  ===  2>nul  吗?
    ╭╩═╮
╭╯G O ╠ 雁过留声
╰⊙═⊙╯

TOP

回复 7楼 的帖子

对于普通用户来说,使用效果上没有什么不同。
在系统实现上来说,两者在句柄的复制及重定向上面有差别。
推荐使用2>&1
1

评分人数

TOP

原帖由 bat007 于 2010-3-25 23:27 发表
@echo off
for /l %%a in (1,1,255) do (
    ping 127.0.0.%%a | find /i "Request timed out" >nul 2>&1 && echo ping 127.0.0.%%a
)


这个方法不错,但在这个上能不能实现这样:%%a取一位数时,写出来的是000而不是0,比如说是ping 127.0.0.000 ,而不是ping 127.0.0.0 。取1时是ping 127.0.0.001 ,而不是ping 127.0.0.1 。请各位指教。

TOP

回复 9楼 的帖子

这样做的目的是什么?为什么要把IP地址写成那个样子?

TOP

能这样做吗?我有别的用处么。谁能帮我一下。

TOP

回复 11楼 的帖子

这个太简单了。你为什么不愿意说出真实用途呢?

TOP

是这样的,我做的这个程序窗口大小是定的,刚好是最后一位全是三位的这个尺寸,我会做批量的PING,特别要求格式整齐。你能告诉我这个怎么做吗?

TOP

回复 13楼 的帖子

把你现在的代码贴出来看看?

TOP

@echo off
for /l %%a in (1,1,255) do (
    ping 127.0.0.%%a | find /i "Request timed out" >nul 2>&1 && echo ping 127.0.0.%%a
)

TOP

返回列表