精品技术论坛

精品技术论坛 (https://bbs.et8.net/bbs/index.php)
-   『软件使用』 (https://bbs.et8.net/bbs/forumdisplay.php?f=17)
-   -   【求助】请教一个自动运行程序的批处理的写法 (https://bbs.et8.net/bbs/showthread.php?t=1004446)

jerry 2010-09-20 15:43:44

【求助】请教一个自动运行程序的批处理的写法
 
rt,
写一个自动运行程序的批处理,内容是
运行c:\a.exe
然后ping 192.168.0.1
ping通后打开ie访问www.baidu.com

请达人指点:p多谢

pomuyu 2010-09-20 20:11:00

@echo off
start c:\a.bat

set TestIP=192.168.0.1
set isout=""

echo checking...
:chkIP
for /F "skip=7 tokens=11 delims=(%% " %%s in ('ping %TestIP%') do set isout=%%s
if %isout%==100 (goto chkIP)

start iexplore www.google.com
exit

:blush; 写的很烂,高手见笑……

流浪猫 2010-09-21 12:42:25

我复制下来运行了。第一次设testip是一个可ping通的IP,批处理顺利执行了。第二次设testip是一个我局域网里不存在的一个ip。结果卡一会儿还是会执行到打开www.google.com,这样算不算是正常呢?for的那行我没看懂。因此不敢确定这样的结果是不是正常的。

zeroxia 2010-09-21 13:22:04

Windows的ping默认是4次就结束了,可以直接判断返回值:
代码:

ping TESTIP
if errorlevel 1 (
  echo Ping failed
  REM ... ...
) else (
  echo Ping success
  REM ... ...
)


pomuyu 2010-09-21 17:23:09

引用:

作者: 流浪猫 (文章 10664101)
我复制下来运行了。第一次设testip是一个可ping通的IP,批处理顺利执行了。第二次设testip是一个我局域网里不存在的一个ip。结果卡一会儿还是会执行到打开www.google.com,这样算不算是正常呢?for的那行我没看懂。因此不敢确定这样的结果是不是正常的。

没想明白,感觉是ping通了…… 

能不能试下开一个cmd窗口运行: ping -t testip
同时运行这个批处理,看看打开google时ping窗口输出有没有变化。

for那行主要是把ping命令返回信息中-
“Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),”
-这一行最后括号内lost所占的百分比那个数值提取出来。
关于for的具体用法请google,我当时也是用“试凑法”挤出来的:blush;

另外,这个批处理自己用时一般会严格一点,将这一行:
  if %isout%==100 (goto chkIP)
改成:
  if not %isout%==0 (goto chkIP)
这样只要有不正常的包就会继续检测。你也可以改后再试下。。

pomuyu 2010-09-21 17:28:48

引用:

作者: zeroxia (文章 10664131)
Windows的ping默认是4次就结束了,可以直接判断返回值:
代码:

ping TESTIP
if errorlevel 1 (
  echo Ping failed
  REM ... ...
) else (
  echo Ping success
  REM ... ...
)


赞思路! 
不过刚试了一下,有一个小小的问题,貌似只要不是100% loss,errorlevel就是0。

ila 2010-09-22 03:42:52

能否推荐些批处理的相关资料学习下?

流浪猫 2010-09-25 10:51:39

引用:

作者: pomuyu (文章 10664280)
没想明白,感觉是ping通了…… 

能不能试下开一个cmd窗口运行: ping -t testip
同时运行这个批处理,看看打开google时ping窗口输出有没有变化。

for那行主要是把ping命令返回信息中-
“Packets: Sent = 4, Received = 4, Lost = 0 (0% los......

我试了下,可能问题是出在这里了。ping局域网一个没开机机器的IP和ping一个网络正常机器的IP,lost= 的那一行都是“lost = 0<0%loss>”。只在ping一个网络不好会有丢包的地址时,lost结果会有XX% loss的数值。也就是说ping网络完全正常或完全不通的IP,lost那行结果都会是0% loss。

lms 2010-09-25 12:37:15

引用:

作者: ila (文章 10664546)
能否推荐些批处理的相关资料学习下?

中国DOS联盟还是很不错的
hxxp://www.cn-dos.net/forum/index.php

pomuyu 2010-09-26 12:34:43

引用:

作者: 流浪猫 (文章 10666256)
我试了下,可能问题是出在这里了。ping局域网一个没开机机器的IP和ping一个网络正常机器的IP,lost= 的那一行都是“lost = 0<0%loss>”。只在ping一个网络不好会有丢包的地址时,lost结果会有XX% loss的数值。也就是说ping网络完全正常或完全不通的IP,lost那行结果都......

不知道你是怎么确定“没开机”的,我刚试了一下,台式机Ping笔记本,开机时(0% loss), 合屏幕休眠后(100% loss)。

流浪猫 2010-09-29 00:51:05

2 个附件
引用:

作者: pomuyu (文章 10666971)
不知道你是怎么确定“没开机”的,我刚试了一下,台式机Ping笔记本,开机时(0% loss), 合屏幕休眠后(100% loss)。

我上面所做的试验都是在win7的dos窗口下运行的。今天在vm里的xp再试了,发现ping一个网线不通的IP的操作,win7和xp返回的结果不同。

jerry 2010-09-30 14:22:23

测试了一下
如果局域网内用访问控制列表隔离的
就是楼上下面那个图的提示
就会导致虽然ping不通但也会打开ie


所有时间均为北京时间, 现在的时间是 19:20:35.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号