SunTB编写IP地址设置切换批处理

所属分类: 脚本专栏 / DOS/BAT 阅读数: 873
收藏 0 赞 0 分享
修正一个提取网络连接名称的错误,原因在于之前在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
************************************************************
更多精彩内容其他人还在看

XP下WORKSTATION启动慢导致系统启动时间过长问题的解决方法

通常安装过VMwareWorkstation导致系统启动过慢,经分析后,发现WORKSTATION服务启动时间较长,禁用后效果明显,可WORKSTATION是WINDOWS的共享基础服务,像我就离不开这个服务的,所以只需下面的脚本就可以解决问题了
收藏 0 赞 0 分享

IP动态切换bat脚本

因为公司办公室要设置固定IP才行,而家里的IP段和公司是不一样的,家里采用了DHCP机制,这样每次就得改IP设置,很是不方便,就写了这个脚本来动态切换,很流畅的说! WINXP,WIN7测试通过
收藏 0 赞 0 分享

奥汀管理员不切换bat脚本 V1.0-Design by Adobo

很多程序不能在管理员权限下运行,尤其是一些破解的程序。所以写了这个脚本,不影响正常的管理员,也不用切换到USERS账户~
收藏 0 赞 0 分享

cmd NTSD命令用法详解

ntsd 是一条dos命令,功能是用于结束一些常规下结束不了的死进程
收藏 0 赞 0 分享

win2003下杀任何进程的命令(taskkill,ntsd)

才能关掉一个用任务管理器关不了的进程?大多数人想到的都是专门工具,如IceSword。其实用Windows自带的工具就能杀大部分进程
收藏 0 赞 0 分享

Windows和 Linux下生成以当前时间命名文件的方法

在 Windows、Linux 操作系统,分别利用BAT批处理文件和Shell脚本,生成类似“20110228_082905.txt”以“年月日_时分秒”命名的文件
收藏 0 赞 0 分享

用批处理去掉快捷方式上的小箭头图案的代码

用批处理去掉快捷方式上的小箭头图案的代码,需要的朋友可以参考下。
收藏 0 赞 0 分享

xcopy 实现批处理拷贝文件或文件夹

xcopy 是一个很有用的doc命令,应该学习学习,XCOPY 还有众多的功能, 是加参数来完成的。上面的/s /e 参数的作用分别是把子目录和空目录都复制过去
收藏 0 赞 0 分享

安全工具netsh IPSec使用方法[ip安全策略]

IPSec的全称是Internet Protocol Security,翻译成中文就是Internet协议安全性。它的作用主要有两个:一个是保护 IP 数据包的内容,另外一点就是通过数据包筛选并实施受信任通讯来防御网络攻击
收藏 0 赞 0 分享

注册表危险组件删除功能批处理

用批处理实现的删除注册表危险组件的代码,主要应用于服务器,个人电脑不建议使用。
收藏 0 赞 0 分享
查看更多