中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [原创]自动Ping网关地址 上一主题 | 下一主题
yangzhiyi
中级用户





积分 261
发帖 123
注册 2006-6-6
状态 离线
『楼 主』:  [原创]自动Ping网关地址

网络维护好工具
修改了一下
::自动获取网关地址,不用手工输入地址来ping。by yangzhiyi
@echo off
title PING 网关地址
if not %OS%==Windows_NT echo 这个程序只适用于 WINDOWS 2000/XP/2003 系统 & pause >nul & GOTO :EOF
ipconfig | find /i "Default Gateway" >nul || (echo 你的网络连接不正常,无法自动获取网关地址。 & echo. & echo 按任意键退出。。。 & pause >nul & goto :EOF)
rd /s /q "%temp%\iptest" 1>nul 2>nul
md "%temp%\iptest" 1>nul 2>nul

for /f "tokens=2 delims=:" %%i in ('ipconfig^|find /i "Default Gateway"') do (echo 网关%%i>>%temp%\iptest\Gateway.txt)
findstr "[.]" %temp%\iptest\Gateway.txt >%temp%\iptest\Gateway1.txt 2>nul
for /f "tokens=2 delims= " %%i in (%temp%\iptest\Gateway1.txt) do (echo %%i>>%temp%\iptest\Gateway2.txt)
findstr /n "[.]" %temp%\iptest\Gateway2.txt >%temp%\iptest\Gateway3.txt 2>nul
for /f "skip=1 tokens=2 delims=:" %%i in (%temp%\iptest\Gateway3.txt) do (set add=%%i)
for /f "tokens=2 delims=:" %%i in (%temp%\iptest\Gateway3.txt) do (set  Gateway=%%i)
if "%Gateway%"=="" (cls & echo 无法自动获取网关地址 &goto end)
if "%add%" == "" goto ping

echo 请选择你想测试的网关
echo.
type %temp%\iptest\Gateway3.txt 2>nul
echo.
set op=1
set /p op=请选择[回车键%op%]:
findstr "%op%:" %temp%\iptest\Gateway3.txt >%temp%\iptest\Gateway4.txt  2>nul
for /f "tokens=2 delims=:" %%i in (%temp%\iptest\Gateway4.txt) do (set  Gateway=%%i)
if "%Gateway%"=="" (cls & echo 无法自动获取网关地址 &goto end) else (goto ping)

:ping
cls
echo 测试网关:%Gateway%
echo.
set bbb=4
echo 输入指定发送回响请求消息的次数
set /p bbb=[回车键默认%bbb%次,0为不限]:

echo 0%bbb%>%temp%\iptest\Gateway4.txt
findstr /x "[0-9]*" %temp%\iptest\Gateway4.txt || goto ping
::if "%bbb%" == "" goto ping
rd /s /q "%temp%\iptest" 1>nul 2>nul
if "%bbb%" == "0" (
cls
echo 执行 ping %Gateway% -t
echo.
ping -t %Gateway%
) else (
cls
echo 执行 ping %Gateway% -n %bbb%
echo.
ping -n %bbb% %Gateway%
)
goto end

:end
echo. & echo 按任意键退出。。。 & pause >nul
[ Last edited by yangzhiyi on 2008-3-16 at 06:46 PM ]

2008-3-15 18:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 2 楼』:  

  晕,用得着这么麻烦吗?可以简单点:
@echo off
:begin
cls
for /f "delims=: tokens=2" %%a in ('ipconfig ^| findstr /c:"Default Gateway"') do ping /n 1 %%a >nul
if errorlevel 1 (
                echo 网关不通&ping /n 11 127.1 >nul
        ) else (
                       echo 网关通畅&ping /n 11 127.1 >nul
            )
goto begin
注:不适合双网卡和拨号。

[ Last edited by zw19750516 on 2008-3-17 at 12:26 AM ]

2008-3-15 20:13
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
yangzhiyi
中级用户





积分 261
发帖 123
注册 2006-6-6
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by zw19750516 at 2008-3-15 20:13:
  晕,用得着这么麻烦吗?可以简单点:
@echo off
:begin
cls
for /f "delims=: tokens=2" %%a in ('ipconfig ^| findstr /c:"Default Gateway"') do ping /n 1 %% ...

注:搞得这么复杂就是为了能够适合多网卡和拨号等。

为一不好的是 无法自动获取网关地址 时不说是为什么无法取得。

2008-3-16 05:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 4 楼』:  

  兄弟,我真的认为你是在走弯路,你搞的那么麻烦还是不能自动识别多网卡和拨号中的正确网关,还是要靠人去选择网关,所以个人以为你的这个P实际应用价值不大。其实,电脑再怎么样也不是人脑,它是无法自动识别多网关中哪个是你想要拼测的网关的,对于多网卡还只能由人来选择正确的网关。我也写了个自动检测局域网的P,你可以借鉴下:http://www.cn-dos.net/forum/viewthread.php?tid=38275&fpage=5
  

2008-3-16 11:22
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
yangzhiyi
中级用户





积分 261
发帖 123
注册 2006-6-6
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by zw19750516 at 2008-3-16 11:22:
  兄弟,我真的认为你是在走弯路,你搞的那么麻烦还是不能自动识别多网卡和拨号中的正确网关,还是要靠人去选择网关,所以个人以为你的这个 ...

看准这说明:自动获取网关地址,不用手工输入地址来ping

用途就是,不管什么网络环境都不用手工输入网关地址,当然如有多个就给选择。


我想问下多网卡时,还怎么自动识别呢,难道电脑真比人脑利害了,会知道你想哪个?

2008-3-16 17:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by zw19750516 at 2008-3-15 20:13:
@echo off
:begin
cls
for /f "delims=: tokens=2" %%a in ('ipconfig ^| findstr /c:"Default Gateway"') do ping /n 1 %% ...

  如果不要人为去判断正确网关,我这段代码就能实现自动拼测网关的功能,所以我说你真的是想复杂了,我没别的意思,只为了共同提高的目的,请楼主不要激动哦。

2008-3-17 00:25
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
yangzhiyi
中级用户





积分 261
发帖 123
注册 2006-6-6
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by zw19750516 at 2008-3-17 00:25:

  如果不要人为去判断正确网关,我这段代码就能实现自动拼测网关的功能,所以我说你真的是想复杂了,我没别的意思,只为了共同提高的目的,请楼主不要激动哦。

如果有两个网卡,且最后一个网卡没有网关地址时会有问题,
在我 网络邻居连通测试 这贴中就是这样用才发现有问题,只会找到最后一个网关,在很多情况下网关地址是空的。

呵,论坛就是要讨论。

2008-3-22 13:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: