@echo off title %~nx0 ver | find "Windows XP" && set osver=xp ver | find "Windows 2000" && set osver=2k cls echo: echo ************************************************************* echo ***** ***** echo * === DHCPクライアント(IPアドレスの自動取得)を === * echo * === 有効に設定し(直し)ます === * echo ***** ***** echo * === * LANアダプタ を確認 === * echo * === * DHCP Client サービスの startup 設定確認 === * echo * === * DHCP Client サービスを startup [自動] に設定 === * echo * === * IPアドレスの取得確認 === * echo ***** *** echo ************************************************************* echo: echo 続行しますか? 中断は xボタン or Ctrl-C echo: echo *** 何かキーを押すと続行します *** pause >nul :RUNRUN ipconfig /all | findstr Ethernet >nul || GOTO NO_ADAPT echo: echo ============================================================== echo DHCP Client サービスの設定を確認します... echo ============================================================== echo: regedit /e /a "dhcp_temp.txt" "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dhcp" if not exist dhcp_temp.txt set reg_ex=error if not exist dhcp_temp.txt GOTO ERROR for /f "usebackq tokens=2 delims=:" %%x in (`findstr /b \"Start\" dhcp_temp.txt`) do set startup=%%x if ERRORLEVEL 1 GOTO ERROR if "%startup%"=="00000002" echo DHCP Client サービスは [自動] に設定されています if "%startup%"=="00000003" echo DHCP Client サービスは [手動] に設定されています if "%startup%"=="00000004" echo DHCP Client サービスは [無効] に設定されています del dhcp_temp.txt 2>nul echo: if "%startup%"=="00000002" GOTO DHCP_RUN :DHCP_AUT echo: echo ============================================================== echo DHCP Client サービスを [自動] に設定します... echo ============================================================== echo: > set_temp.reg echo REGEDIT4 >>set_temp.reg echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dhcp] >>set_temp.reg echo "Start"=dword:00000002 regedit /s set_temp.reg if ERRORLEVEL 1 set reg_ad=error if ERRORLEVEL 1 GOTO ERROR if not ERRORLEVEL 1 echo * レジストリは正常に登録されました... del set_temp.reg >nul if "%startup%"=="00000004" GOTO REBOOT :DHCP_RUN echo: echo ============================================================== echo DHCP Client サービスを(再)起動します... echo ============================================================== echo: net start | findstr /c:"DHCP Client" >nul && net stop "DHCP Client" net start "DHCP Client" if ERRORLEVEL 1 set netstart=error if ERRORLEVEL 1 GOTO ERROR if not ERRORLEVEL 1 echo * DHCP Client サービスは正常に開始されました... echo: :SHOW cls echo ============================================================== echo 有効な LANアダプタ を表示... echo * 'Ethernet adapter' に続く文字列が「接続名」となります echo ! * [Media State] が 'xxxxx disconnected'となっているものは echo ! * ケーブルが接続されていない、または、無線LANの設定が必要 echo ============================================================== ipconfig ipconfig /all | findstr Ethernet >nul || set adapter=none if "%adapter%"=="none" GOTO NO_ADAPT echo: echo *** 続行するには何かキーを押シテクダサイ *** echo *** 中断は xボタン or Ctrl-C *** pause >nul :facename set iface= set connect= cls echo: echo ============================================================== echo *** DHCP Client サービス でIPアドレスの自動取得を有効にします echo *** 指定接続名の 'IPアドレスの自動取得' を有効にします echo *** 無指定だと 接続名 "ローカル エリア接続" で設定します echo: echo * そのままEnter : '接続名' [ローカル エリア接続] echo * 2 : '接続名' [ローカル エリア接続 2] echo * 3 : '接続名' [ローカル エリア接続 3] echo * 4 : '接続名' [ワイヤレス ネットワーク接続] echo * 5 : '接続名' [ワイヤレス ネットワーク接続 2] echo * その他 : '接続名' を直接入力 echo * R (r) : もう一度 '接続名' の状態を表示する echo * QQ (qq) : キャンセル echo ============================================================== echo: echo * 有効な接続(アダプタ)名 echo: for /f "usebackq tokens=3,3-5 delims=: " %%x in (`ipconfig ^| findstr Ethernet`) do echo * %%x %%y %%z echo: set /p iface= 接続名 [番号,名前, qq, r] : echo: if "%iface%"=="" set "iface=ローカル エリア接続" if "%iface%"=="2" set "iface=ローカル エリア接続 2" if "%iface%"=="3" set "iface=ローカル エリア接続 3" if "%iface%"=="4" set "iface=ワイヤレス ネットワーク接続" if "%iface%"=="5" set "iface=ワイヤレス ネットワーク接続 2" if /i "%iface%"=="r" GOTO SHOW if /i "%iface%"=="qq" GOTO CANCEL ipconfig /all | findstr /c:"Ethernet adapter %iface%:" >nul if ERRORLEVEL 1 echo ! 接続名 %iface% は存在しません! && GOTO WAIT if "%osver%"=="xp" ipconfig /release "%iface%" | findstr /c:"media disconnected" && set connect=no if "%osver%"=="2k" ipconfig /release "%iface%" | findstr /c:"media/cable disconnected" && set connect=no echo: if "%connect%"=="no" echo ! 接続名 %iface% は接続されていません! && GOTO WAIT echo * 選択した接続名は [ %iface% ] です... GOTO GET_IP :WAIT echo: echo *** 戻るには何かキーを押シテクダサイ *** pause >nul GOTO facename :GET_IP echo: echo ============================================================== echo IPアドレスの自動取得を有効に設定します... echo ============================================================== echo: netsh interface ip set address "%iface%" dhcp >nul if "%osver%"=="xp" ipconfig /release "%iface%" | findstr /c:"media disconnected" && set connect=no if "%osver%"=="2k" ipconfig /release "%iface%" | findstr /c:"media/cable disconnected" && set connect=no if "%connect%"=="no" echo ! 接続名 %iface% は接続されていません! && GOTO WAIT netsh interface ip set dns "%iface%" dhcp >nul if ERRORLEVEL 1 set netsh_set=error if ERRORLEVEL 1 GOTO ERROR if not ERRORLEVEL 1 echo * IPアドレスの自動取得を有効に設定しました... echo: echo ============================================================== echo DHCPサーバ から IPアドレス を取得します... echo ============================================================== echo: if "%osver%"=="xp" ipconfig /release "%iface%" | findstr /c:"media disconnected" && set connect=no if "%osver%"=="2k" ipconfig /release "%iface%" | findstr /c:"media/cable disconnected" && set connect=no if "%connect%"=="no" GOTO ERROR_IP if "%osver%"=="xp" ipconfig /renew "%iface%" | findstr /c:"Request has timed out" && set request=no if "%osver%"=="2k" ipconfig /renew "%iface%" | findstr /c:"Server unreachable" && set request=no if "%request%"=="no" GOTO ERROR_IP echo * IPアドレスを取得しました... echo: echo: echo ============================================================== echo 確認します... echo ============================================================== echo: 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 echo IPアドレス : %inet% echo ネットマスク : %mask% echo ゲートウェイ : %gateway% echo DNSサーバ : %dns% echo: echo: GOTO END :REBOOT echo: echo ============================================================== echo: echo ! DHCP Client サービスが [無効] に設定されていたため echo ! サービスを起動するには、Windows の再起動が必要です! echo ! Windows を再起動して再度おためし...クダサイ echo: echo ============================================================== GOTO END :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 * QQ (qq) : キャンセル echo: echo ============================================================== echo: set /p choice= [Y, qq] : echo: if /i "%choice%"=="qq" GOTO CANCEL set adapter= GOTO RUNRUN :ERROR echo: echo !!! エラー出ますた... !!! echo: if "%reg_ex%"=="error" echo ! レジストリのエクスポートでエラー発生しました ! if "%reg_ad%"=="error" echo ! レジストリの登録でエラー発生しました ! if "%netstart%"=="error" echo ! DHCP Client サービスを開始できませんでした ! if "%netsh_set%"=="error" echo ! netsh コマンドで設定エラー発生しました ! GOTO END :ERROR_IP echo ============================================================== echo: for /f "usebackq tokens=2 delims=:" %%x in (`ipconfig /all ^| findstr /c:"IP Address"`) do set inet=%%x if defined inet set inet=%inet: =% echo ! ! IPアドレス取得に失敗しました ! if "%connect%"=="no" echo ! ! %iface% が接続されていないようです ! if "%request%"=="no" echo ! ! DHCPサーバの応答がありません ! echo: echo ! * 現在のIPアドレス : %inet% echo ! (注:別のアダプタのIPアドレスが表示されることがあります) echo: echo %inet% | findstr /b 169 >nul && set apipa=on if "%apipa%"=="on" echo ! 169.254. で始まるものは'自動プライベートIPアドレス'です if "%apipa%"=="on" echo ! 自動プライベートIPアドレスでは外部との通信はできません ! echo: if "%connect%"=="no" echo ! 有線ならケーブルの接続、 if "%connect%"=="no" echo ! 無線LANなら無線接続の設定、を確認してクダサイ... if "%request%"=="no" echo ! ルータのDHCPサーバ機能が無効か、 if "%request%"=="no" echo ! LAN内にDHCPサーバが稼動していないと思われます... if "%osver%"=="2k" echo ! Windows 2000 で無線LANを使うには if "%osver%"=="2k" echo ! 接続ユーティリティのインストールも必要です... echo: echo ============================================================== GOTO END :CANCEL echo: echo キャンセルしますた... GOTO END :END echo: echo *** 終了します... *** echo: echo *** 何かキーを押すと閉じます *** echo: pause >nul