netsh 指令試試看。
如何透過 netsh 指令快速切換 Windows 網路設定
@echo off
netsh interface ip set address name="區域連線" source=static addr=192.168.1.18 mask=255.255.255.0 gateway= gwmetric=1
把它存成兩個批次檔,內容IP也修改成兩組,需要時點選批次檔自動切換IP
@echo off
CLS
Md "%Windir%\MdTest" 2>nul&&Rd "%Windir%\MdTest" >nul 2>nul||(Echo.&Echo.&Echo 請用右鍵以系統管理員身分執行&Echo.&Echo.&Echo.&Echo.&Pause&Exit)
FOR /F "DELIMS=:+ TOKENS=1" %%I In ('TYPE "%~f0"^|FINDSTR ^^^^::+') Do Set %%I=Used
setlocal enabledelayedexpansion
Set GW=192.168.0.1
Set Subnet=255.255.255.0
Set DNS1=168.95.1.1
Set DNS2=8.8.8.8
Set GetIP=%1&REM 若不是Aoto則是手動
For /f "Skip=1" %%i In ('wmic nic Where NetEnabled^=True Get NetConnectionID^|findstr .') Do (
If /I "%1" EQU "Auto" (
Netsh interface ip set address "%%i" dhcp||(Echo 錯誤^:1 &Goto :Err)
Netsh interface ip set dnsservers "%%i" dhcp||(Echo 錯誤^:2 &Goto :Err)
Goto :EOF
) Else (
Call :FindIP
Netsh interface ip Set Address "%%i" Static !IP! !Subnet! !GW! 1
Netsh interface ip Set dnsservers "%%i" static !DNS1! none No
Echo ::+!IP!>>"%~f0"
Set IP=
Goto :EOF
)
)
Echo 無可用IP
Pause
Goto :EOF
:Err
Echo 設定失敗,請排除後再執行一次
Pause
Goto :EOF
:FindIP
FOR /F "DELIMS=:- TOKENS=1" %%J In ('TYPE "%~f0"^|FINDSTR /I "^::-"') Do (
If Not Defined %%J Set IP=%%J&Goto :EOF
)
Goto :EOF
::Unused 底下列出要指定的 IP 位置清單格式必須是::-IP位置
::-192.168.0.1
::-192.168.0.2
::========以上是未使用的IP清單==============
::========以下是已使用的IP清單==============
::Used
::+192.168.0.1
將底下批次檔指令存成.bat檔
底下清單
難怪這題沒有最佳解答 因為沒人看懂樓主的問題
我也遇到跟樓主同樣的困擾
用GUI設定 很簡單,
但用批次檔設定, 第二次執行的指令會蓋掉第一次
FYI
第二片網路卡 netsh interface 的 bat 檔,為何無法執行成功,還有新增第二個 ip 動作
https://ithelp.ithome.com.tw/articles/10212088