@echo off title %~nx0 ver | findstr /i /c:"Version 5" && set osname=XP ver | findstr /i /c:"Version 6" && set osname=VISTA REM ##################################### REM ### RUNRUN REM ##################################### :RUNRUN cls echo: echo ============================================================== echo ***** ***** echo * * ネットワークのテストを実行しちゃいます! * * echo * * echo * *** ルータ、DNSサーバに Ping、 *** * echo * *** 名前解決(nslookup) とか... *** * echo ***** ***** echo ============================================================== echo: echo *** 何かキーを押してクダサイ *** echo: pause >nul if "%osname%"=="XP" ( ipconfig /all | findstr Ethernet >nul || GOTO NO_ADAPT ) else ( ipconfig /all | findstr /c:"イーサネット アダプタ" >nul || GOTO NO_ADAPT ) REM ##################################### REM ### 設定確認 REM ##################################### cls echo: echo ============================================================== echo TCP/IPの設定を確認します... echo ============================================================== echo: setlocal enabledelayedexpansion if "%osname%"=="VISTA" ( for /f "usebackq tokens=2 delims=:" %%x in (`ipconfig /all ^| findstr /c:"IPv4 アドレス"`) do if not defined inet set inet=%%x for /f "usebackq tokens=2 delims=:" %%x in (`ipconfig /all ^| findstr /c:"サブネット マスク"`) do if not defined mask set mask=%%x for /f "usebackq tokens=2 delims=:" %%x in (`ipconfig /all ^| findstr /c:"デフォルト ゲートウェイ"`) do if not defined gateway set gateway=%%x for /f "usebackq tokens=2 delims=:" %%x in (`ipconfig /all ^| findstr /c:"DNS サーバー"`) do if not defined dns set dns=%%x ) else ( for /f "usebackq tokens=2 delims=:" %%x in (`ipconfig /all ^| findstr /c:"IP Address"`) do set inet=%%x for /f "usebackq tokens=2 delims=:" %%x in (`ipconfig /all ^| findstr /c:"Subnet Mask"`) do set mask=%%x for /f "usebackq tokens=2 delims=:" %%x in (`ipconfig /all ^| findstr /c:"Default Gateway"`) do set gateway=%%x for /f "usebackq tokens=2 delims=:" %%x in (`ipconfig /all ^| findstr /c:"DNS Servers"`) do set dns=%%x ) if defined inet set inet=%inet: =% if "%inet%"=="" set inet=error if "%inet%"=="0.0.0.0" set inet=error echo %inet% | findstr /b /c:169.254. >nul && set APIPA=on if defined mask set mask=%mask: =% if "%mask%"=="" set mask=error if "%mask%"=="0.0.0.0" set mask=error if defined gateway set gateway=%gateway: =% if "%gateway%"=="" set gateway=error if "%gateway%"=="0.0.0.0" set gateway=error if defined dns set dns=%dns: =% if "%dns%"=="" set dns=error if "%dns%"=="0.0.0.0" set dns=error :HYOUJI echo IPアドレス : %inet% echo ネットマスク : %mask% echo ゲートウェイ : %gateway% echo DNSサーバ : %dns% echo: if "%inet%"=="error" GOTO ERROR if "%mask%"=="error" GOTO ERROR if "%gateway%"=="error" GOTO ERROR if "%dns%"=="error" GOTO ERROR echo *** 何かキーを押すと続けます *** echo: pause >nul REM ##################################### REM ### ルータ REM ##################################### :ROUTER cls REM for /f "usebackq tokens=2 delims=:" %%x in (`ipconfig ^| findstr /c:"Default Gateway"`) do set gateway=%%x REM set gateway=%gateway: =% echo: echo ============================================================== echo ルータに Ping します... echo ============================================================== echo * ルータのIPアドレスは %gateway% echo -------------------------------------------------------------- ping %gateway% echo: if ERRORLEVEL 1 ( echo: echo -------------------------------------------------------------- echo ! エラー出ますた orz echo -------------------------------------------------------------- echo: ) else ( if "%osname%"=="VISTA" ( echo * ^(0%% の損失^) なら問題なし echo * ^(100%% の損失^) ならルータから応答がありませぬ、繋がってない? ) else ( echo * ^(0%% loss^) なら問題なし echo * ^(100%% loss^) ならルータから応答がありませぬ、繋がってない? )) echo: echo: echo *** 何かキーを押すと続けます *** pause >nul REM ##################################### REM ### DNSサーバ REM ##################################### REM for /f "usebackq tokens=2 delims=:" %%x in (`ipconfig /all ^| findstr /c:"DNS Servers"`) do set dns=%%x REM set dns=%dns: =% echo: echo: echo ============================================================== echo 優先 DNSサーバに Ping します... echo ============================================================== echo * 優先 DNSサーバのIPアドレスは %dns% echo -------------------------------------------------------------- ping %dns% echo: if ERRORLEVEL 1 ( echo: echo -------------------------------------------------------------- echo ! エラー出ますた orz echo -------------------------------------------------------------- echo: ) else ( if "%osname%"=="VISTA" ( echo * ^(0%% の損失^) なら問題なし echo * ^(100%% の損失^) ならルータから応答がありませぬ、繋がってない? ) else ( echo * ^(0%% loss^) なら問題なし echo * ^(100%% loss^) ならルータから応答がありませぬ、繋がってない? )) echo: echo: echo *** 何かキーを押すと続けます *** pause >nul REM ##################################### REM ### 名前解決 REM ##################################### echo: echo: set target=www.google.co.jp call :LOOKUP set target=d.hatena.ne.jp call :LOOKUP GOTO NEXT :LOOKUP echo ============================================================== echo %target% を 名前解決 します... echo ============================================================== for /f "usebackq delims=" %%x in (`nslookup %target% 2^>nul ^| findstr /i address`) do set targetIP=%%x if not defined targetIP ( echo: echo ! 名前解決ができませぬ...orz echo: ) set targetIP=%targetIP:Addresses:=% set targetIP=%targetIP:Address:=% set targetIP=%targetIP: =% if "%targetIP%"=="%dns%" ( echo ! 名前解決ができませぬ...orz echo: ) else ( echo: echo * OK! echo * %target% echo * IPアドレスは %targetIP% echo: ) exit /b :NEXT echo *** 何かキーを押すと続けます *** pause >nul REM ##################################### REM ### Ping REM ##################################### echo: echo: set target= set target=www.google.co.jp call :PingPing set target=d.hatena.ne.jp call :PingPing GOTO END :PingPing echo ============================================================== echo %target% に Ping します... echo ============================================================== ping %target% echo: if ERRORLEVEL 1 ( echo: echo -------------------------------------------------------------- echo ! エラー出ますた orz echo -------------------------------------------------------------- echo: ) else ( if "%osname%"=="VISTA" ( echo * ^(0%% の損失^) なら問題なし echo * ^(100%% の損失^) ならルータから応答がありませぬ、繋がってない? ) else ( echo * ^(0%% loss^) なら問題なし echo * ^(100%% loss^) ならルータから応答がありませぬ、繋がってない? )) echo: exit /b REM ##################################### REM ### NO_ADAPT REM ##################################### :NO_ADAPT echo: echo ! 有効なアダプタがありません ! echo ! 「ネットワーク接続」及び「デバイス マネージャ」で ! echo ! アダプタが無効になっていないか確認 ! echo: echo *** 「ネットワーク接続」と「デバイス マネージャ」を開きます *** echo *** 何かキーを押シテクダサイ *** echo: pause >nul start devmgmt.msc start ncpa.cpl cls echo: echo ============================================================== echo: echo *** テストを再開しますか? echo: echo * そのままEnterで続行します echo * 99 : キャンセル echo: echo ============================================================== echo: set /p choice= [Y, 99] : echo: if /i "%choice%"=="99" GOTO CANCEL set adapter= GOTO RUNRUN REM ##################################### REM ### ERROR REM ##################################### :ERROR echo: if "%APIPA%"=="on" ( echo !IPアドレスが「自動プライベートIPアドレス」です !) if "%inet%"=="error" ( echo ! IPアドレスが設定されていません !) if "%mask%"=="error" ( echo ! サブネットマスクが設定されていません !) if "%gateway%"=="error" ( echo ! ゲートウェイ IPアドレスが設定されていません !) if "%dns%"=="error" ( echo ! DNSサーバ IPアドレスが設定されていません !) echo: echo ! TCP/IPの設定を確認しませう ! echo * ケーブルの接続を確認しませう echo * 自動設定(DHCPクライアント)を有効にするか echo * 手動設定しませう echo: GOTO END REM ##################################### REM ### CANCEL REM ##################################### :CANCEL echo: echo キャンセルしますた... GOTO END REM ##################################### REM ### END REM ##################################### :END echo: echo *** 終了します... *** echo: echo *** 何かキーを押すと閉じます *** pause >nul