win10 批处理设置静态ip地址

如下代码另存为xxx.bat。 点击运行即可

@echo off
rem 强制获取管理员权限
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
rem //设置变量
set NAME="vEthernet (Default Switch)"
rem //以下属性值可以根据需要更改
set ADDR=x.22.96.1
set MASK=255.255.240.0
set GATEWAY=
set DNS1=
set DNS2=
rem //以上属性依次为IP地址、子网掩码、网关、首选DNS、备用DNS


echo Select your operation:
echo 1 set static IP
echo 2 set dynamic IP
echo 3 quit
echo please input you selection with enter:

rem 直接设置静态ip地址:

goto 1
rem set /p operate=
rem if %operate%==1 goto 1
if %operate%==2 goto 2
if %operate%==3 goto 3


:1
echo setting IP]...
rem //可以根据你的需要更改
echo IP = %ADDR%
echo mask = %MASK%
echo gateway = %GATEWAY%
netsh interface ipv4 set address %NAME% static %ADDR% %MASK% %GATEWAY%
echo pri. DNS = %DNS1%
if "%DNS1%"=="" (echo DNS1 empty) else netsh interface ipv4 set dns %NAME% static %DNS1%
echo backup DNS = %DNS2%
if "%DNS2%"=="" (echo DNS2 empty) else (netsh interface ipv4 add dns %NAME% %DNS2%)
echo -------setted static IP: %ADDR%--------
rem Get-NetIPConfiguration
ipconfig /all
pause
goto 3


:2
echo 正在设置动态IP,请稍等...
echo 正在从DHCP自动获取IP地址...
netsh interface ip set address %NAME% dhcp
echo 正在从DHCP自动获取DNS地址...
netsh interface ip set dns %NAME% dhcp
echo **********已设置为动态IP地址***********
pause
goto 3


:3
exit

 

=================================

关于以mshta vbscript:CreateObject更多说明:

CMD命令行中以管理员权限启动应用程序实现方法
很多时候我们需要管理员权限来运行bat那么就需要结合vbscript来实现了
方法一:
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
常用如下:
@echo off
mode con lines=30 cols=60
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"
rem 下面可以写你的bat代码了

-----
ShellExecute method
Run a script or application in the Windows Shell.

Syntax:
.ShellExecute "application", "parameters", "dir", "verb", window
.ShellExecute 'some program.exe', '"some parameters with spaces"', , "runas", 1

Key:
application The file to execute (required)
parameters Arguments for the executable
dir Working directory
verb The operation to execute (runas/open/edit/print)
window View mode application window (normal=1, hide=0, 2=Min, 3=max, 4=restore, 5=current, 7=min/inactive, 10=default)
Note the different (double " and single ' ) quotes that can be used to delimit paths with spaces.

The runas verb is undocumented but can be used to elevate permissions. When a script is run with elevated permissions several aspects of the user environment may change: The current directory, the current TEMP folder and any mapped drives will be disconnected.

runas will fail if you are running in WOW64 (a 32 bit process on 64 bit windows) for example %systemroot%\syswow64\cmd.exe ...

The ShellExecute method is a member of the IShellDispatch2 object.

Examples
Run a batch script with elevated permissions, flag=runas:
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "E:\demo\batchScript.cmd", "", "", "runas", 1

Run a VBScript with elevated permissions, flag=runas:
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "cscript", "E:\demo\vbscript.vbs", "", "runas", 1
“If you don't execute your ideas, they die” ~ Roger Von Oech

批处理文件中的%~dp0表示含义
~是扩展的意思,相当于把一个相对路径转换绝对路径
%0代指批处理文件自身
%1表示批处理文件命令行接收到的第一个参数,%2表示第二个,以此类推
%~d0 是指批处理所在的盘符,其中d代表drive
%~p0 是指批处理所在的目录,其中p代表path
%~dp0 是批处理所在的盘符加路径
cd %~dp0 就是进入批处理所在目录了
参考:https://www.jb51.net/article/67623.htm

上一篇:深度解析CSS中的单位以及区别


下一篇:MongoDB远程定时备份与还原