背景
笔记本往返于固定IPv4地址和自动获取IPv4地址的环境中,每次打开网卡配置修改IPv4地址实在是太过繁琐,因此使用 bat批处理命令 实现每次双击自动切换。
AutoChangeIPv4.bat
使用前需要将 ping 命令的目的地址修改为对应环境的网关。网卡的名称需要修改为当前电脑的网卡名称。
@echo offtitle IPv4配置
mode con cols=30 lines=15
::改变窗口大小
::color 3f
::改变窗口颜色:: 开始获取管理员权限
setlocal
set uac=~uac_permission_tmp_%random%
md "%SystemRoot%\system32\%uac%" 2>nul
if %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else (echo set uac = CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs"echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%\%uac%.vbs"echo WScript.Quit >>"%temp%\%uac%.vbs""%temp%\%uac%.vbs" /fdel /f /q "%temp%\%uac%.vbs" & exit )
endlocal
:: 完成获取,下面可以开始写你自己的代码了::先将IP设置为自动获取
:ipDHCP
netsh interface ipv4 set address name="以太网" source=dhcp
netsh interface ipv4 set dnsservers name="以太网" source=dhcp
echo IP设置为自动获取
::ping结果保存
ping 10.10.42.3 > C:\ping.txt
::取丢失包的个数
for /f "skip=7 tokens=8 delims= " %%i in (C:\ping.txt) do (set str=%%~i
)
echo %str%
If %str%==0 (
goto end
) else if %str%==1 (
echo 1
goto end
) else if %str%==2 (
echo 2
goto end
) else if %str%==3 (
echo 3
goto end
) else (
echo IP配置错误,正在重新配置IP,请稍后... & goto ipLab
)
:ipLab
netsh interface ipv4 set address name="以太网" source=static address=172.31.32.90 mask=255.255.255.0 gateway=172.31.32.2
netsh interface ipv4 set dnsservers name="以太网" source=static address=114.114.114.114
echo 配置备用DNS
netsh interface ipv4 add dnsservers name="以太网" address=202.112.144.30
echo IP设置为172.31.32.90
goto end
:end
echo IP已经正确配置
del C:\ping.txt
Pause>Nul