中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-07 22:31
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]自动Ping网关地址 查看 1,737 回复 6
楼 主 [原创]自动Ping网关地址 发表于 2008-03-15 18:19 ·  中国 广东 茂名 电信
中级用户
★★
积分 261
发帖 123
注册 2006-06-06 19:23
20年会员
UID 56648
状态 离线
网络维护好工具
修改了一下

::自动获取网关地址,不用手工输入地址来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=请选择:
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=:

echo 0%bbb%>%temp%\iptest\Gateway4.txt
findstr /x "*" %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 ]
2 发表于 2008-03-15 20:13 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
  晕,用得着这么麻烦吗?可以简单点:
@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 ]
3 发表于 2008-03-16 05:07 ·  中国 广东 茂名 电信
中级用户
★★
积分 261
发帖 123
注册 2006-06-06 19:23
20年会员
UID 56648
状态 离线
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 %% ...


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

为一不好的是 无法自动获取网关地址 时不说是为什么无法取得。
4 发表于 2008-03-16 11:22 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
  兄弟,我真的认为你是在走弯路,你搞的那么麻烦还是不能自动识别多网卡和拨号中的正确网关,还是要靠人去选择网关,所以个人以为你的这个P实际应用价值不大。其实,电脑再怎么样也不是人脑,它是无法自动识别多网关中哪个是你想要拼测的网关的,对于多网卡还只能由人来选择正确的网关。我也写了个自动检测局域网的P,你可以借鉴下:http://www.cn-dos.net/forum/viewthread.php?tid=38275&fpage=5
  
5 发表于 2008-03-16 17:13 ·  中国 广东 电信
中级用户
★★
积分 261
发帖 123
注册 2006-06-06 19:23
20年会员
UID 56648
状态 离线
Originally posted by zw19750516 at 2008-3-16 11:22:
  兄弟,我真的认为你是在走弯路,你搞的那么麻烦还是不能自动识别多网卡和拨号中的正确网关,还是要靠人去选择网关,所以个人以为你的这个 ...


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

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


我想问下多网卡时,还怎么自动识别呢,难道电脑真比人脑利害了,会知道你想哪个?
6 发表于 2008-03-17 00:25 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
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 %% ...

  如果不要人为去判断正确网关,我这段代码就能实现自动拼测网关的功能,所以我说你真的是想复杂了,我没别的意思,只为了共同提高的目的,请楼主不要激动哦。
7 发表于 2008-03-22 13:21 ·  中国 广东 茂名 电信
中级用户
★★
积分 261
发帖 123
注册 2006-06-06 19:23
20年会员
UID 56648
状态 离线
Originally posted by zw19750516 at 2008-3-17 00:25:

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


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

呵,论坛就是要讨论。
论坛跳转: