标题: [原创]自动Ping网关地址
[打印本页]
作者: yangzhiyi
时间: 2008-3-15 18:19
标题: [原创]自动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 ]
作者: bat-zw
时间: 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 %%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 ]
作者: yangzhiyi
时间: 2008-3-16 05:07
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 %% ... |
|
注:搞得这么复杂就是为了能够适合多网卡和拨号等。
为一不好的是 无法自动获取网关地址 时不说是为什么无法取得。
作者: bat-zw
时间: 2008-3-16 11:22
兄弟,我真的认为你是在走弯路,你搞的那么麻烦还是不能自动识别多网卡和拨号中的正确网关,还是要靠人去选择网关,所以个人以为你的这个P实际应用价值不大。其实,电脑再怎么样也不是人脑,它是无法自动识别多网关中哪个是你想要拼测的网关的,对于多网卡还只能由人来选择正确的网关。我也写了个自动检测局域网的P,你可以借鉴下:
http://www.cn-dos.net/forum/viewthread.php?tid=38275&fpage=5
作者: yangzhiyi
时间: 2008-3-16 17:13
Quote: |
Originally posted by zw19750516 at 2008-3-16 11:22:
兄弟,我真的认为你是在走弯路,你搞的那么麻烦还是不能自动识别多网卡和拨号中的正确网关,还是要靠人去选择网关,所以个人以为你的这个 ... |
|
看准这说明:自动获取网关地址,不用手工输入地址来ping
用途就是,不管什么网络环境都不用手工输入网关地址,当然如有多个就给选择。
我想问下多网卡时,还怎么自动识别呢,难道电脑真比人脑利害了,会知道你想哪个?
作者: bat-zw
时间: 2008-3-17 00:25
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 %% ... |
|
如果不要人为去判断正确网关,我这段代码就能实现自动拼测网关的功能,所以我说你真的是想复杂了,我没别的意思,只为了共同提高的目的,请楼主不要激动哦。
作者: yangzhiyi
时间: 2008-3-22 13:21
Quote: |
Originally posted by zw19750516 at 2008-3-17 00:25:
如果不要人为去判断正确网关,我这段代码就能实现自动拼测网关的功能,所以我说你真的是想复杂了,我没别的意思,只为了共同提高的目的,请楼主不要激动哦。 |
|
如果有两个网卡,且最后一个网卡没有网关地址时会有问题,
在我 网络邻居连通测试 这贴中就是这样用才发现有问题,只会找到最后一个网关,在很多情况下网关地址是空的。
呵,论坛就是要讨论。