如何在不指定IP地址的情况下ping默认网关?

时间:2014-11-11 13:27:32

标签: windows batch-file ping

我正在尝试编写一个批处理文件,通过ping给定网络的默认网关来测试网络连接。 但是,由于我希望这是一个自动化过程,然后将结果记录到文本文件中,我希望能够在各种网络上ping网关,而无需更改/输入IP地址。

是否有通用术语或命令来ping您当前连接的网络的默认网关?

(我已经有了输出选项的命令等。)

到目前为止,我有这个......

@echo off
goto :NETWORK1

:NETWORK1
ipconfig
echo .
Set /P gateway=PLEASE ENTER GATEWAY IP ADDRESS (shown above): 
if /I "%gateway%" EQU "exit" goto :EXIT
if /I not "%gateway%" EQU "exit" goto :NETWORK2

:NETWORK2
echo CLOSING THIS WINDOW WILL ABORT THE CONNECTIVITY TEST.
echo . >> "C:\Network Test Results %date:/=.%.txt"
echo Time: >> "C:\Network Test Results %date:/=.%.txt"
time /t >> "C:\Network Test Results %date:/=.%.txt"
ping %gateway% -n 20 >> "C:\Network Test Results %date:/=.%.txt"
goto :NETWORK2

:EXIT
exit

但我不想指定IP地址,因此我可以不再需要用户输入。

5 个答案:

答案 0 :(得分:0)

在命令行上,你可以试试这个:

for /f "tokens=2 delims=:" %g in ('netsh interface ip show address ^| findstr "Default Gateway"') do ping %g

注意,在批处理文件中,您必须将%加倍,即

for /f "tokens=2 delims=:" %%g in ('netsh interface ip show address ^| findstr "Default Gateway"') do ping %%g

答案 1 :(得分:0)

根据服务器故障的jimbobomcgee,他说出了问题的正确答案How to Extract command-line output into a Variable?

for /f "usebackq tokens=1,2,3 delims=:" %A in (`ipconfig ^| Find "Default Gateway" ^| Findstr/N "." ^| Findstr/B "1:"`) do @if not defined MYVAR set MYVAR=%~C

答案 2 :(得分:0)

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "gateway="
    for /f "tokens=1-5" %%a in ('route -4 print 0.*') do @if "%%e"=="" if "%%a"=="%%b" set "gateway=%%c"
    if not defined gateway goto :eof

    echo CLOSING THIS WINDOW WILL ABORT THE CONNECTIVITY TEST.

:loop
    echo %date% %time%
    >> "Network Test Results %date:/=.%.txt" (
        echo(
        echo(Time: %time%
        ping -n 20 -4 %gateway%
    )
    goto :loop

here

复制的route信息确定网关

已修改,以便更加宽容地解析route命令的使用

for /f "tokens=3" %%a in ('route -4 print 0.* ^| find "0."') do set "gateway=%%a"

答案 3 :(得分:0)

在@MC ND的帮助下,我创建了以下代码,它完全符合我的需要....

  1. ping默认网关,并将结果输出到文本文件
  2. 显示一条消息,告知用户不要关闭命令窗口
  3. @echo off

    setlocal enableextensions disabledelayedexpansion

    for /f "tokens=3" %%a in ('route -4 print 0.*') do set "gateway=%%a"

    :NETWORK

    echo CLOSING THIS WINDOW WILL ABORT THE CONNECTIVITY TEST.

    echo Time >> "C:\Network Test Results %date:/=.%.txt"

    time /t >> "C:\Network Test Results %date:/=.%.txt"

    echo . >> "C:\Network Test Results %date:/=.%.txt"

    ping %gateway% -n 20 >> "C:\Network Test Results %date:/=.%.txt"

    goto :NETWORK

答案 4 :(得分:0)

为Wernfried Domscheit修理小件事

for /f "tokens=2 delims=:" %%g in ('netsh interface ip show address ^| findstr /c:"Default Gateway"') do ping %%g

pause

只需添加/ c:在"默认网关"

之前