最近帮朋友写的一个
批处理,因为他经常在公司和家里切换IP觉得很麻烦,不过他的系统是WIN7的,而且每次在公司所切换的IP也可能会不同,所以就写了个支持WINDOWS下XP WIN7 VISTA系统的IP切换
批处理,该
批处理可以支持多张网卡,支持手工/自动/读取IP配置表。经测试可以正常使用,但代码可能有一些冗余,希望
大家可以多多提出宝贵的建议
复制代码@echo off;setlocal enabledelayedexpansiontitle make by zcHacker
qq: 36868508color 1fmode con: cols=78 lines=30for /f "tokens=* delims= " %%f in ('ver') do echo 本机系统为:%%fecho 系统内核为:%os%echo.echo.☆请注意:目前该系统仅支持Windows下的XP Vista Win7三类系统。if /i not "%os%" == "Windows_NT" echo.;echo 当前系统非Windows_NT内核,本
软件暂不支持!请按任意键退出。 ;pause>nul;goto :b::if /i "!zcz:~28,2!" == "XP" (goto :XP) else (echo.;echo 当前系统非Windows XP,本
软件暂不支持!请按任 意键退出。;pause>nul;goto :b)::win7 Microsoft Windows 7::方案1: for /f "tokens=3 delims= " %%f in ('ver') do echo 本机系统为:%%ffor /f "tokens=3 delims= " %%z in ('ver') do set zcz=%%zif /i "!zcz!" == "XP" (set ip=ip) else (set ip=ipv4)if /i "!zcz!" == "XP" (goto :xp) else (goto :v7):xpecho.echo 本机网卡:for /f "tokens=2*" %%i in ('ipconfig^|find /i "Ethernet adapter"') do set/a bb+=1;set zc_!bb!=%%jfor /l %%p in (1,1,!bb!) do set zcc=!zc_%%p!;echo %%p.!zcc:~0,-2!goto :a:v7echo.echo 本机网卡:for /f "tokens=1*" %%g in ('ipconfig^|find /i "适配器"') do set/a bbb+=1;set zccc_!bbb!=%%hfor /l %%q in (1,1,!bbb!) do set zccz=!zccc_%%q!;echo %%q.!zccz:~0,-1!::for /l %%q in (1,1,!bbb!) do set zccz=!zccc_%%q!;echo %%q.!zccz:~0,-2!goto :a:aecho.set/p y=请对所需要设置的网卡进行选择:if /i %y% == x goto :bif %y% lss 1 echo.输入错误!请重新输入,退出请按【X】;goto :aif %y% gtr !bb! echo.输入错误!请重新输入,退出请按【X】;goto :aif /i "!zcz!" == "XP" (set Q="!zc_%y%:~0,-2!") else (set Q="!zccc_%y%:~0,-1!")echo.当前所选择的网卡为:%Q%
:decho.echo 1.手动设置 2.自动设置set/p sz=请选择所需要设置的类别:if /i %sz% == x (goto :b) else (if %sz% geq 1 (if %sz% leq 2 if %sz% equ 1 (goto hou) else (goto :auto) else echo.输入错误!请重新输入,退出请按【X】;goto :d) else echo.输入错误!请重新输入,退出请按 【X】;goto :d)echo.
houclsecho.是否读取IP配置表?(读取请按"Y",手工输入请按"N")et/p ynn=if /i %ynn% == y goto :pyecho.echo 请输入IP地址:set/p aaa=echo 请输入子网掩码:set/p bbb=echo 请输入网关地址:set/p ccc=echo 请输入首选DNS
服务器:set/p ddd=echo 请输入备用DNS
服务器:set/p eee=echo.echo.请问是否保存该配置?(确认请按"Y",取消请按"N")et/p yn=if /i %yn% == y (goto ave) else (goto he):pyecho.echo.当前配置表如下:echo.if not exist "%~dp0"IP.txt (echo.该文件不存在,请按任意键返回。;pause>nul;goto hou)type "%~dp0"\IP.txtecho.请输入你所需要使用的配置表名:(返回请按"R")set/p iip=::for /f "tokens=2* delims=:" %%i in ('type "%~dp0"IP.txt') do set/a n+=1;if !n!==1 set ii=%%i::for /f "tokens=2* delims=:" %%i in ('type "%~dp0"IP.txt') do set/a n+=1;set i!n!=%%ifor /f "tokens=2* delims=:" %%i in ('type "%~dp0"IP.txt^|find /i "%iip%"') do set/a n+=1;set i!n!=%%ifor /f "tokens=2* delims=:" %%i in ('type "%~dp0"IP.txt^|find /i "IP配置表:%iip%"') do set ipi=%%i ::for /l %%i in (1,1,!n!) do set !i%%1!if /i %iip% == R (goto :d)if /i %iip% == %ipi% (goto :one) else (cls;echo.操作失败。请重新输入:;goto :py)
:oneset aaa=!i2!set bbb=!i3!set ccc=!i4!set ddd=!i5!set eee=!i6!goto heaveecho.echo.请对该配置表进行命名et/p ipp=for /f "tokens=2* delims=:" %%i in ('type "%~dp0"IP.txt^|find /i "IP配置表:%ipp%"') do set ipi=%%i if /i %ipp% == %ipi% (echo.echo.该表名已存在,请重新输入:;goto ave)echo.IP配置表:%ipp%>>"%~dp0"\IP.txtecho.%ipp%的IP地址:%aaa%>>"%~dp0"\IP.txtecho.%ipp%的子网掩码:%bbb%>>"%~dp0"\IP.txtecho.%ipp%的网关地址:%ccc%>>"%~dp0"\IP.txtecho.%ipp%的首选DNS:%ddd%>>"%~dp0"\IP.txtecho.%ipp%的备用DNS:%eee%>>"%~dp0"\IP.txtecho. >>"%~dp0"\IP.txtecho.echo.保存成功!
heecho.echo 正在设置,请稍后。。。。。echo.netsh
interface %ip% set address name=%Q% source=static addr=%aaa% mask=%bbb%netsh interface %ip% set address name=%Q% gateway=%ccc% gwmetric=0netsh interface %ip% set dns name=%Q% source=static addr=%ddd% register=PRIMARYnetsh interface %ip% add dns name=%Q% addr=%eee%netsh interface %ip% set wins name=%Q% source=static addr=nonegoto :c
:autoclsecho 正在设置,请稍后。。。。。echo.@echo.正在设置IP自动获取.....netsh interface %ip% set address name=%Q% source = dhcp>nul@echo.正在设置DNS自动获取.....netsh interface %ip% set dns %Q% source = dhcp register=PRIMARY>nul@echo.正在设置WINS自动获取.....netsh interface %ip% set wins name=%Q% source=dhcp>nulgoto :c
:bexit:cecho.echo.已经设置完成,按按任意键退出。pause>nul