公司固定IP,在家自动IP,懒得麻烦设置了,知道网上有批处理写IP自动切换,下次考虑拿Qt写个图形化界面

一、 首先查看网卡名字,批处理中运行 netsh interface show interface 结果可能如下

D:\GitHub>netsh interface show interface

管理员状态     状态           类型             接口名称
-------------------------------------------------------------------------
已启用            已连接            专用               VMware Network Adapter VMnet1
已启用            已连接            专用               VMware Network Adapter VMnet8
已启用            已连接            专用               本地连接* 10
已启用            已连接            专用               WLAN
已启用            已断开连接          专用               以太网

中文的话记得直接复制中文

二、 根据所需修改下面批处理的变量,记得用 GB2312 编码存成 ip.bat
(不要问我为什么,编码问题会造成各种f___问题)

@ECHO OFF 

rem To check all NIC name.use:  >>  netsh interface show interface  <<


set addr=10.100.8.184
set mask=255.255.255.0
set gateway=10.100.8.1
set dns1=172.16.172.82
set dns2=172.16.172.83
set nic=以太网


rem get Administrator 's  permission 
rem https://www.zhihu.com/question/34541107
cacls.exe "%SystemDrive%\System Volume Information" >nul 2>nul
if %errorlevel%==0 goto Admin
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
echo Set RequestUAC = CreateObject^("Shell.Application"^)>"%temp%\getadmin.vbs"
echo RequestUAC.ShellExecute "%~s0","","","runas",1 >>"%temp%\getadmin.vbs"
echo WScript.Quit >>"%temp%\getadmin.vbs"
"%temp%\getadmin.vbs" /f
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
exit

:Admin
goto retry

rem https://stackoverflow.com/questions/33037811/batch-commands-to-change-ip-and-dns
:retry
echo.Your NIC name is %nic%
SET /P no= press 1 for StaticIP , 2 for DhcpIP:

IF "%no%"=="1" GOTO BUZZ
IF "%no%"=="2" GOTO BSNL
rem if %no% is not 1 nor 2 then exit or goto :retry.
exit /b 0

:BUZZ
netsh interface ipv4 set address name=%nic% source=static ^
      addr=%addr% mask=%mask% gateway=%gateway%
netsh interface ip add dns name=%nic% addr=%dns1%
netsh interface ip add dns name=%nic%  addr=%dns2% index=2
echo. Done!
rem job done, then exit with a pause before
pause
exit /b 0

:BSNL
netsh interface ip set address %nic% dhcp
netsh interface ip set dns %nic% dhcp
echo. Done!
pause

这个批处理自带权限提升,无需右键管理员

参考:

  1. Batch commands to change IP and DNS
  2. How to retrieve Ethernet adapter name in Windows 8.1 batch script
  3. 怎样自动以管理员身份运行bat文件?
  4. 用批处理文件进行TCP/IP设置,方便在家与办公IP切换