自动设置网络.bat

来源:互联网 发布:网络传输协议 tcp 编辑:程序博客网 时间:2024/05/21 11:23

 

:: ==============================:: code by fireghost57:: modify: 2013.08.30:: ==============================@echo offtitle 自动设置网络setlocal enabledelayedexpansion%/*开启此项后可在截取字符串时保存截取内容*/%netsh wlan set hostednetwork mode=disallow%/*承载网络模式不禁止的话不可使用(默认都没有承载模式)*/%cls:STARTRem =========== 生成配置 ===========set "ipconfig_dir=ipconfig.ini"if not exist %ipconfig_dir% (echo [查找主机]>%ipconfig_dir%echo IP_find=>>%ipconfig_dir%echo MAC_find=>>%ipconfig_dir%echo [修改参数]>>%ipconfig_dir%echo HOSTNAME_set=>>%ipconfig_dir%echo IP_set=>>%ipconfig_dir%echo MAC_set=>>%ipconfig_dir%echo MASK_set=>>%ipconfig_dir%echo GATEWAY_set=>>%ipconfig_dir%echo DNS1_set=>>%ipconfig_dir%echo DNS2_set=>>%ipconfig_dir%):LISTENset isChinese=falseset f_Hostname=Nameset f_Adapter=Ethernet adapterset /a f_Adapter_tokens=2set f_Desc=Descriptionset f_IP=IP Addressset f_MAC=Physical Address:: 查找主机名set /a line=0for /f "tokens=2* delims=:" %%i in ('ipconfig/all^|findstr /c:"%f_Hostname%"') do (set /a line+=1set "Name_host=%%i"):: 语言选择if %line% EQU 0 (goto LISTCN)goto OS_VER:LISTCNset isChinese=trueset f_Hostname=主机名set f_Adapter=适配器set /a f_Adapter_tokens=1set f_Desc=描述set f_IP=IPv4 地址set f_MAC=物理地址:: 查找主机名set /a line=0for /f "tokens=2* delims=:" %%i in ('ipconfig/all^|findstr /c:"%f_Hostname%"') do (set /a line+=1set "Name_host=%%i"):: 语言选择if %line% EQU 0 (goto LISTERR)goto OS_VER:LISTERRecho 本程序暂不支持此系统,程序自动退出pause>nulgoto END:OS_VERver | find "5.0." > nul && goto show50ver | find "5.1." > nul && goto show51ver | find "5.2." > nul && goto show52ver | find "6.0." > nul && goto show60ver | find "6.1." > nul && goto show61goto GETINFO:show50@echo ----------------------------------------@echo 当前系统是:[ Windows2000 ]@echo ----------------------------------------goto GETINFO:show51@echo ----------------------------------------@echo 当前系统是:[ WindowsXP ]@echo ----------------------------------------goto GETINFO:show52@echo ----------------------------------------@echo 当前系统是:[ Windows2003 ]@echo ----------------------------------------goto GETINFO:show60@echo ----------------------------------------@echo 当前系统是:[ WindowsVista ]@echo ----------------------------------------goto GETINFO:show61@echo ----------------------------------------@echo 当前系统是:[ Windows7 ]@echo ----------------------------------------goto GETINFO:GETINFO:: 查找连接名称set /a line=0for /f "tokens=1 delims=:" %%i in ('ipconfig/all^|findstr /c:"%f_Adapter%"') do (:: 过滤无效记录set srcStr=%%iset tgtStr=%f_Desc%:: 判断是否包含字符串,逻辑与命令若为真,不再继续执行后面语句,否则继续执行逻辑或后半部echo !srcStr!|findstr !tgtStr!>nul && set isExist=true || set isExist=falseif !isExist! == false (:: 过滤连接名称,取第一部分为%%a,剩余部分为%%bfor /f "tokens=%f_Adapter_tokens%,* delims= " %%a in ("!srcStr!") do (set /a line+=1set "Lan_!line!=%%b"))):: 过滤字符串set Name_host=%Name_host: =%:: 输出信息ipconfig /all>["%Name_host%"].cfg:GETDESC:: 获取网卡信息set /a line=0for /f "tokens=1,3 delims=:" %%i in ('findstr /n /c:"%f_Desc%" [%Name_host%].cfg') do (set /a line+=1set Sech_!line!=%%iset Desc_!line!=%%jecho !line!.%%j)echo 发现%line%条网卡信息.:: 网卡序号选择if %line% == 1 (set /a num=1) else (set /p num=请输入要处理的网卡序号:)set /a next_num=num+1if %num% LEQ 0 (:: 小于最小值goto INPUTERR) else (:: 大于最大值if %num% GTR %line% (goto INPUTERR)):: 设置网络连接名称set Lan_Name=!Lan_%num%!goto GETNETINFO:INPUTERRecho 输入错误,请重新输入.pause>nulclsgoto GETDESC:: 获取网络信息:GETNETINFO:: 查找IP信息set "IP_host= "for /f "tokens=1,3 delims=:" %%i in ('findstr /n /c:"%f_IP%" [%Name_host%].cfg') do (if !num! neq !line! (:: 不是最大值if !Sech_%num%! leq %%i (if %%i leq !Sech_%next_num%! (set IP_host=%%j))) else (:: 是最大值if !Sech_%num%! leq %%i (set IP_host=%%j))):: 查找MAC信息set "MAC_host= "for /f "tokens=1,3 delims=:" %%i in ('findstr /n /c:"%f_MAC%" [%Name_host%].cfg') do (if !num! neq !line! (:: 不是最大值if !Sech_%num%! leq %%i (if %%i leq !Sech_%next_num%! (set MAC_host=%%j))) else (:: 是最大值if !Sech_%num%! leq %%i (set MAC_host=%%j))):: 网卡序号初始化set /a CrdNum=1:: 转存网卡描述set Desc=!Desc_%num%!goto FNDA:: 在注册表中查找 10位以内 %Desc% 网卡注册信息:FNDAfor /f "tokens=2*" %%i in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\000%CrdNum% /v DriverDesc') do (set DrvDesc=%%j)if "%Desc%" EQU " %DrvDesc%" goto SETNETINFOset /a CrdNum=CrdNum+1if %CrdNum% GEQ 10 goto FNDBgoto FNDA:: 在注册表中查找 大于10位 %Desc% 网卡注册信息:FNDBfor /f "tokens=2*" %%i in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\00%CrdNum% /v DriverDesc') do (set DrvDesc=%%j)if "%Desc%" EQU " %DrvDesc%" goto SETNETINFOset /a CrdNum=CrdNum+1if %CrdNum% GEQ 40 goto FNDERRgoto FNDB:: 未找到网卡信息:FNDERRcls@echo        输入错误,请重新输入.pausegoto LISTENRem =========== 根据设定配置网络参数 ===========:SETNETINFO:: 过滤字符串set Name_host=%Name_host: =%set Desc=%Desc:~1%set IP_host=%IP_host: =%set MAC_host=%MAC_host: =%if %isChinese% == true (set IP_host=%IP_host:(=%set IP_host=%IP_host:首选=%set IP_host=%IP_host:)=%):: 显示echo.echo 本机名称:[%Name_host%]echo 网卡名称:[%Desc%]echo 网卡编号:[%CrdNum%]echo 网卡IP:[%IP_host%]echo 网卡MAC:[%MAC_host%]echo 连接名称:[%Lan_Name%]echo.::set /p mode=[1:自动修改IP和MAC,2:匹配修改IP和MAC,3:只修改IP,4:只修改MAC,5:恢复MAC]:set /a mode=1:: =========== 读取配置 ===========for /f "tokens=1* delims=,:= " %%i in (%ipconfig_dir%) do (if "%%i"=="IP_find"(set "IP_find=%%j")if "%%i"=="MAC_find"(set "MAC_find=%%j")if "%%i"=="HOSTNAME_set"(set "HOSTNAME_set=%%j")if "%%i"=="IP_set"(set "IP_set=%%j")if "%%i"=="MAC_set"(set "MAC_set=%%j")if "%%i"=="MASK_set"(set "MASK_set=%%j")if "%%i"=="GATEWAY_set"(set "GATEWAY_set=%%j")if "%%i"=="DNS1_set"(set "DNS1_set=%%j")if "%%i"=="DNS2_set"(set "DNS2_set=%%j")):: 自动修改IP和MACif %mode% == 1 (:: 自动修改主机名if "%HOSTNAME_set%" neq "" (reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ActiveComputerName" /v ComputerName /t reg_sz /d %HOSTNAME_set% /f >nul 2>nul reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t reg_sz /d %HOSTNAME_set% /f >nul 2>nul reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v Hostname /t reg_sz /d %HOSTNAME_set% /f >nul 2>nul echo 你的主机名为:[%Name_host%]echo 修改主机名为:[%HOSTNAME_set%]echo 设置主机名完成echo.):: 自动修改 IPif "%IP_set%" neq "" (:: 子网掩码检查if "%MASK_set%" equ "" (echo 子网掩码输入错误!请重试!pause>nulclsgoto SETNETINFO):: 设置静态IPecho 你的IP地址为:[%IP_host%]echo 修改IP地址为:[%IP_set%]echo 正在设置本机地址及子网掩码,请稍等......netsh interface ip set address "%Lan_Name%" source=static addr=%IP_set% mask=%MASK_set%) else (:: 设置动态IPecho 正在自动获取IP地址,请稍等......netsh interface ip set address name="%Lan_Name%" source=dhcp):: 自动修改 MACif "%MAC_set%" neq "" (goto SETMAC) else (:: 恢复MACgoto RSTMAC)):: 匹配修改IP和MACif %mode% == 2 (:: 匹配修改 IPif "%IP_find%"=="%IP_host%" (if "%IP_set%" neq "" (:: 子网掩码检查if "%MASK_set%" equ "" (echo 子网掩码输入错误!请重试!pause>nulclsgoto SETNETINFO):: 设置静态IPecho 你的IP地址为:[%IP_host%]echo 修改IP地址为:[%IP_set%]echo 正在设置本机地址及子网掩码,请稍等......netsh interface ip set address "%Lan_Name%" source=static addr=%IP_set% mask=%MASK_set%) else (:: 设置动态IPecho 正在自动获取IP地址,请稍等......netsh interface ip set address name="%Lan_Name%" source=dhcp)):: 匹配修改 MACif "%MAC_find%"=="%MAC_host%" (if "%MAC_set%" neq "" (goto SETMAC) else (:: 恢复MACgoto RSTMAC))):: 只修改IPif %mode% == 3 (if "%IP_set%" neq "" (:: 子网掩码检查if "%MASK_set%" equ "" (echo 子网掩码输入错误!请重试!pause>nulclsgoto SETNETINFO):: 设置静态IPecho 你的IP地址为:[%IP_host%]echo 修改IP地址为:[%IP_set%]echo 正在设置本机地址及子网掩码,请稍等......netsh interface ip set address "%Lan_Name%" source=static addr=%IP_set% mask=%MASK_set%) else (:: 设置动态IPecho 正在自动获取IP地址,请稍等......netsh interface ip set address name="%Lan_Name%" source=dhcp):: 设置网络参数goto SETNET):: 只修改MACif %mode% == 4 (if "%MAC_set%" neq "" (goto SETMAC) else (:: 恢复MACgoto RSTMAC)):: 恢复MACif %mode% == 5 (:: 恢复 MACgoto RSTMAC)clsgoto SETNETINFO:: 恢复 MAC:RSTMACecho 正在恢复本机物理地址,请稍等......:: 过滤字符串set MAC_set=%MAC_set:-=%if %CrdNum% GEQ 10 goto RSTREGBgoto RSTREGA:: 在注册表中恢复 10位以内 NetworkAddress 网卡注册信息:RSTREGAreg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\000%CrdNum%" /v NetworkAddress /freg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\000%CrdNum%\Ndi\Params\NetworkAddress" /v Default /freg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\000%CrdNum%\Ndi\Params\NetworkAddress" /v Default /t reg_sz /d "" /fgoto READNIC:: 在注册表中恢复 大于10位 NetworkAddress 网卡注册信息:RSTREGBreg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\00%CrdNum%" /v NetworkAddress /freg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\00%CrdNum%\Ndi\Params\NetworkAddress" /v Default /freg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\00%CrdNum%\Ndi\Params\NetworkAddress" /v Default /t reg_sz /d "" /fgoto READNIC:: 修改 MAC:SETMACecho 你的MAC地址为:[%MAC_host%]echo 修改MAC地址为:[%MAC_set%]echo 正在设置本机物理地址,请稍等......:: 过滤字符串set MAC_set=%MAC_set:-=%if %CrdNum% GEQ 10 goto SETREGBgoto SETREGA:: 在注册表中修改10位以内 NetworkAddress 网卡注册信息:SETREGAreg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\000%CrdNum%" /v NetworkAddress /t reg_sz /d %MAC_set% /freg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\000%CrdNum%\Ndi\Params\NetworkAddress" /v Default /freg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\000%CrdNum%\Ndi\Params\NetworkAddress" /v Default /t reg_sz /d %MAC_set% /fgoto READNIC:: 在注册表中修改大于10位 NetworkAddress 网卡注册信息:SETREGBreg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\00%CrdNum%" /v NetworkAddress /t reg_sz /d %MAC_set% /freg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\00%CrdNum%\Ndi\Params\NetworkAddress" /v Default /freg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\00%CrdNum%\Ndi\Params\NetworkAddress" /v Default /t reg_sz /d %MAC_set% /fgoto READNIC:: 读网卡ID和NICNAME:READNICif %CrdNum% GEQ 10 (:: 网卡编号大于10for /f "tokens=2*" %%i in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\00%CrdNum% /v NetCfgInstanceId') do (set CrdID=%%j)) else (:: 网卡编号不大于10for /f "tokens=2*" %%i in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\000%CrdNum% /v NetCfgInstanceId') do (set CrdID=%%j))for /f "tokens=2*" %%i in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\%CrdID%\Connection /v Name') do (set NICname=%%j)goto SETNET:: 设置网络参数:SETNET:: 设置网关if "%GATEWAY_set%" neq "" (echo 正在设置本机网关,请稍等......netsh interface ip set address "%Lan_Name%" gateway=%GATEWAY_set% gwmetric=1) else (echo 正在清空本机网关,请稍等......netsh interface ip delete address "%Lan_Name%" gateway=%GATEWAY_set%):: 设置 DNSif "%DNS1_set%" neq "" (echo 正在设置首选DNS ,请稍等......netsh interface ip set dns "%Lan_Name%" source=static addr=%DNS1_set%if "%DNS2_set%" neq "" (echo 正在设置备用DNS ,请稍等......netsh interface ip add dns "%Lan_Name%" addr=%DNS2_set%)) else (echo 正在设置自动DNS ,请稍等......netsh interface ip set dns "%Lan_Name%" source=dhcp):: 设置 WINSecho 正在设置WINS ,请稍等......netsh interface ip set wins name="%Lan_Name%" source=static addr=none:: 重启网卡netsh interface set interface %NICname% disabled disconnected %NICname%netsh interface set interface %NICname% enabled connected %NICname%:: 读取主机名for /f "tokens=2* delims=:" %%i in ('ipconfig/all^|findstr /c:"%f_Hostname%"') do (set "Name_host=%%i")set Name_host=%Name_host: =%if "%Name_host%" equ "%HOSTNAME_set%" (set FileName=%HOSTNAME_set%) else (set FileName=%Name_host%)echo 设置完成!ipconfig /all>["%FileName%"].cfgecho 用户网络信息已保存在 [%FileName%].cfg 文件内pause>nul:END

原创粉丝点击