SunTB编写IP地址设置切换批处理
程序员文章站
2022-11-19 22:53:20
修正一个提取网络连接名称的错误,原因在于之前在for中使用空格作为分隔符 如果网络连接名为“本地连接 2”,原来只会识别成“本地连接”,从而导致设置失败 现已更正 说明:1...
修正一个提取网络连接名称的错误,原因在于之前在for中使用空格作为分隔符
如果网络连接名为“本地连接 2”,原来只会识别成“本地连接”,从而导致设置失败
现已更正
说明:1、可以选择要设置的网络连接
2、可以手动设定固定ip,也可以通过dhcp自动获取
3、可以在批处理中预设多组mac与ip对应数据,当内网有mac绑定时可快速查询相应ip
4、dns设置提供四类数据(中国电信、 中国联通/中国网通、中国移动/ 国铁通、内网网关)
dns为福州地区数据,请自行更改为当地各宽带运营商dns
5、再添加一功能:在设置完毕后可以选择是否当本机mac及ip数据添加到本批处理中以便下次自动识别
批处理代码如下:
@title ip地址设置切换批处理 by suntb
@echo off & setlocal enabledelayedexpansion
if exist "%windir%\system32\slmgr.vbs" (
echo.&echo 本批处理在 vista 以及 win7 中须以管理员身份运行
echo.&echo 请查看批处理窗口标题栏信息开头是否为“管理员:”
echo.&echo 如符合上述条件可按任意键继续,否则请退出批处理后以管理员身份重新运行
pause>nul
)
set n=0
for /f "delims=:" %%a in ('ipconfig/all^|findstr /i /b /c:"ethernet adapter"') do (set /a n=!n!+1&set str=%%a&set net!n!=!str:~17!)
set n=0
for /f "tokens=2 delims=:" %%a in ('ipconfig/all^|findstr /i /c:"description"') do (set /a n=!n!+1&set netcard!n!=%%a)
set n=0
for /f "tokens=2 delims=:" %%a in ('ipconfig/all^|findstr /i /c:"physical address"') do (set /a n=!n!+1&set mac!n!=%%a)
:net
echo.&echo 请选择当前本机要设置的网络链接:
for /l %%a in (1,1,!n!) do (
echo.
echo %%a - !net%%a! - !netcard%%a!
echo mac 地址:!mac%%a!
)
echo.&set num=&set /p num=请输入序号并回车加以选择:
cls
if defined net%num% (set net=!net%num%!&set mac=!mac%num%: =!&set mac=!mac:~0,17!) else (echo.&echo 输入的序号有误,请重新选择!&goto :net)
:lib
set mask=255.255.255.0
set gate=192.168.0.1
cls&echo.&echo 当前 !net! 的 mac 为 !mac!
for /f "tokens=2 delims=[]" %%a in ('findstr /i "!mac!" %0') do set ip=%%a
if defined ip (
set inbat=1
echo.&echo 在批处理数据库中找到对应数据
echo.&echo ip : !ip!
echo.&echo 子网掩码 : !mask!
echo.&echo 网关 : !gate!
echo.&set /p ip=如需改变 ip 数据请手动输入并回车,如取默认值请直接回车 :
echo.&set /p mask=如需改变 子网掩码 数据请手动输入并回车,如取默认值请直接回车 :
echo.&set /p gate=如需改变 网关 数据请手动输入并回车,如取默认值请直接回车 :
goto :isp
) else (
set inbat=0
echo.&echo 在批处理数据库中未找到对应 ip ,请手动选择 ip 设置方式
goto :lan
)
:lan
echo.&echo 当前要设置的网络链接是:
echo.&echo !net! - !netcard%num%!
echo.&echo 请选择 ip 设置方式:
echo.&echo 1 - 手动设定固定 ip
echo.&echo 2 - dhcp 自动获取
echo.&set choose=&set /p choose=请输入序号并回车加以选择:
cls
if %choose% equ 1 goto :set
if %choose% equ 2 goto :dhcp
echo.&echo 输入的序号有误,请重新选择!&goto :lan
:set
set ip=192.168.0.9
cls&echo.&echo 默认 ip 为 !ip! ,如需改变请手动输入并回车,如取默认值请直接回车:
echo.&set /p ip=
cls&echo.&echo 默认子网掩码为 !mask! ,如需改变请手动输入并回车,如取默认值请直接回车:
echo.&set /p mask=
cls&echo.&echo 默认网关为 !gate! ,如需改变请手动输入并回车,如取默认值请直接回车:
echo.&set /p gate=
:isp
cls&echo.&echo 请选择宽带线路对应 dns (福州地区):
echo.&echo 1 - 中国电信
echo.&echo 2 - 中国联通 / 中国网通
echo.&echo 3 - 中国移动 / 中国铁通
echo.&echo 4 - 内网网关%gate%
echo.&set isp=&set /p isp=请输入序号并回车加以选择:
if %isp% equ 1 (call :10000&goto :doset)
if %isp% equ 2 (call :10010&goto :doset)
if %isp% equ 3 (call :10086&goto :doset)
if %isp% equ 4 (set dns1=%gate%&goto :doset)
echo.&echo 输入的序号有误,请重新选择!&goto :isp
:doset
cls&echo.&echo 正在设置 %net% ,ip 地址为 %ip%,请稍候...
netsh interface ip set address name="%net%" static %ip% %mask% %gate% 1 >nul
netsh interface ip set dns name="%net%" static %dns1% >nul
if defined dns2 netsh interface ip add dns name="%net%" %dns2% 2 >nul
goto :end
:dhcp
cls&echo.&echo 正在设置 %net% ,自动获取 ip 及 dns ,请稍候...
netsh interface ip set address name="%net%" dhcp >nul 2>nul
netsh interface ip set dns name="%net%" dhcp >nul 2>nul
goto :end
:end
cls
ipconfig/all
echo.&echo 设置完毕,当前 ip 信息如上,请仔细查看
if !inbat! equ 0 (
echo.&echo 输入 y 并回车可将本机 mac 及 ip 数据添加到本批处理中以便下次自动识别
echo.&set /p addbat=若不添加数据请直接回车退出:
if /i !addbat! equ y echo>>%0 [!mac!]!ip!
) else (pause>nul)
exit
************************************************************
::以下dns仅供福州地区使用,请自行更改为本地区各宽带运营商dns
:10000
set dns1=218.85.152.99
set dns2=218.85.157.99
goto :eof
:10010
set dns1=58.22.96.66
set dns2=218.104.128.106
goto :eof
:10086
set dns1=222.47.29.93
set dns2=222.47.62.142
goto :eof
************************************************************
主机mac与ip分配对应数据库,当内网有mac绑定时可快速查询相应ip
可按示例格式([mac地址]ip地址)自行添加,每组数据单独一行
示例:
[11-22-33-44-55-66]192.168.0.1
************************************************************
如果网络连接名为“本地连接 2”,原来只会识别成“本地连接”,从而导致设置失败
现已更正
说明:1、可以选择要设置的网络连接
2、可以手动设定固定ip,也可以通过dhcp自动获取
3、可以在批处理中预设多组mac与ip对应数据,当内网有mac绑定时可快速查询相应ip
4、dns设置提供四类数据(中国电信、 中国联通/中国网通、中国移动/ 国铁通、内网网关)
dns为福州地区数据,请自行更改为当地各宽带运营商dns
5、再添加一功能:在设置完毕后可以选择是否当本机mac及ip数据添加到本批处理中以便下次自动识别
批处理代码如下:
复制代码 代码如下:
@title ip地址设置切换批处理 by suntb
@echo off & setlocal enabledelayedexpansion
if exist "%windir%\system32\slmgr.vbs" (
echo.&echo 本批处理在 vista 以及 win7 中须以管理员身份运行
echo.&echo 请查看批处理窗口标题栏信息开头是否为“管理员:”
echo.&echo 如符合上述条件可按任意键继续,否则请退出批处理后以管理员身份重新运行
pause>nul
)
set n=0
for /f "delims=:" %%a in ('ipconfig/all^|findstr /i /b /c:"ethernet adapter"') do (set /a n=!n!+1&set str=%%a&set net!n!=!str:~17!)
set n=0
for /f "tokens=2 delims=:" %%a in ('ipconfig/all^|findstr /i /c:"description"') do (set /a n=!n!+1&set netcard!n!=%%a)
set n=0
for /f "tokens=2 delims=:" %%a in ('ipconfig/all^|findstr /i /c:"physical address"') do (set /a n=!n!+1&set mac!n!=%%a)
:net
echo.&echo 请选择当前本机要设置的网络链接:
for /l %%a in (1,1,!n!) do (
echo.
echo %%a - !net%%a! - !netcard%%a!
echo mac 地址:!mac%%a!
)
echo.&set num=&set /p num=请输入序号并回车加以选择:
cls
if defined net%num% (set net=!net%num%!&set mac=!mac%num%: =!&set mac=!mac:~0,17!) else (echo.&echo 输入的序号有误,请重新选择!&goto :net)
:lib
set mask=255.255.255.0
set gate=192.168.0.1
cls&echo.&echo 当前 !net! 的 mac 为 !mac!
for /f "tokens=2 delims=[]" %%a in ('findstr /i "!mac!" %0') do set ip=%%a
if defined ip (
set inbat=1
echo.&echo 在批处理数据库中找到对应数据
echo.&echo ip : !ip!
echo.&echo 子网掩码 : !mask!
echo.&echo 网关 : !gate!
echo.&set /p ip=如需改变 ip 数据请手动输入并回车,如取默认值请直接回车 :
echo.&set /p mask=如需改变 子网掩码 数据请手动输入并回车,如取默认值请直接回车 :
echo.&set /p gate=如需改变 网关 数据请手动输入并回车,如取默认值请直接回车 :
goto :isp
) else (
set inbat=0
echo.&echo 在批处理数据库中未找到对应 ip ,请手动选择 ip 设置方式
goto :lan
)
:lan
echo.&echo 当前要设置的网络链接是:
echo.&echo !net! - !netcard%num%!
echo.&echo 请选择 ip 设置方式:
echo.&echo 1 - 手动设定固定 ip
echo.&echo 2 - dhcp 自动获取
echo.&set choose=&set /p choose=请输入序号并回车加以选择:
cls
if %choose% equ 1 goto :set
if %choose% equ 2 goto :dhcp
echo.&echo 输入的序号有误,请重新选择!&goto :lan
:set
set ip=192.168.0.9
cls&echo.&echo 默认 ip 为 !ip! ,如需改变请手动输入并回车,如取默认值请直接回车:
echo.&set /p ip=
cls&echo.&echo 默认子网掩码为 !mask! ,如需改变请手动输入并回车,如取默认值请直接回车:
echo.&set /p mask=
cls&echo.&echo 默认网关为 !gate! ,如需改变请手动输入并回车,如取默认值请直接回车:
echo.&set /p gate=
:isp
cls&echo.&echo 请选择宽带线路对应 dns (福州地区):
echo.&echo 1 - 中国电信
echo.&echo 2 - 中国联通 / 中国网通
echo.&echo 3 - 中国移动 / 中国铁通
echo.&echo 4 - 内网网关%gate%
echo.&set isp=&set /p isp=请输入序号并回车加以选择:
if %isp% equ 1 (call :10000&goto :doset)
if %isp% equ 2 (call :10010&goto :doset)
if %isp% equ 3 (call :10086&goto :doset)
if %isp% equ 4 (set dns1=%gate%&goto :doset)
echo.&echo 输入的序号有误,请重新选择!&goto :isp
:doset
cls&echo.&echo 正在设置 %net% ,ip 地址为 %ip%,请稍候...
netsh interface ip set address name="%net%" static %ip% %mask% %gate% 1 >nul
netsh interface ip set dns name="%net%" static %dns1% >nul
if defined dns2 netsh interface ip add dns name="%net%" %dns2% 2 >nul
goto :end
:dhcp
cls&echo.&echo 正在设置 %net% ,自动获取 ip 及 dns ,请稍候...
netsh interface ip set address name="%net%" dhcp >nul 2>nul
netsh interface ip set dns name="%net%" dhcp >nul 2>nul
goto :end
:end
cls
ipconfig/all
echo.&echo 设置完毕,当前 ip 信息如上,请仔细查看
if !inbat! equ 0 (
echo.&echo 输入 y 并回车可将本机 mac 及 ip 数据添加到本批处理中以便下次自动识别
echo.&set /p addbat=若不添加数据请直接回车退出:
if /i !addbat! equ y echo>>%0 [!mac!]!ip!
) else (pause>nul)
exit
************************************************************
::以下dns仅供福州地区使用,请自行更改为本地区各宽带运营商dns
:10000
set dns1=218.85.152.99
set dns2=218.85.157.99
goto :eof
:10010
set dns1=58.22.96.66
set dns2=218.104.128.106
goto :eof
:10086
set dns1=222.47.29.93
set dns2=222.47.62.142
goto :eof
************************************************************
主机mac与ip分配对应数据库,当内网有mac绑定时可快速查询相应ip
可按示例格式([mac地址]ip地址)自行添加,每组数据单独一行
示例:
[11-22-33-44-55-66]192.168.0.1
************************************************************
上一篇: ADO调用分页查询存储过程的实例讲解
下一篇: PHP 的Opcache加速的使用方法