让大家见笑了,觉得代码太多,应该还可以简化的,但水平不高!
不知道高手能不能简化一下代码!
还有,子网掩码和备用DNS显示不出来,哪位高手知道怎么弄吗?
@echo off
mode con cols=80 lines=30
:top
title ………………………………………………IP修改器………………………………………………
cls
color 0a
::::::::::::::::::::::::::::::::::::::::::::::
:检测IP,网关,DNS
@echo off
setlocal enabledelayedexpansion
set IP_num=0
set Gateway_num=0
set DNS_num=0
for /f "tokens=2* delims=:" %%i in ('ipconfig /all ^| find /i "IP Address"') do (
for /f "tokens=2* delims=:" %%a in ('ipconfig /all ^| find /i "Default Gateway"') do (
for /f "tokens=2* delims=:" %%1 in ('ipconfig /all ^| find /i "DNS Servers"') do (
set IP_=%%i
set Gateway_=%%a
set DNS_=%%1
if "!IP_num!"=="0" set IP2=!IP_:~1!
if "!Gateway_num!"=="0" set Gateway2=!Gateway_:~1!
if "!DNS_num!"=="0" set DNS2=!DNS_:~1!
set /a IP_num=!IP_num!+1
set /a Gateway_num=!Gateway_num!+1
set /a DNS_num=!DNS_num!+1
)
)
)
CLS
::::::::::::::::::::::::::::::::::::::::::::::
echo.
echo IP修改器 QQ:82288252
echo ================================================================================
echo 本机信息:
echo 计算机名:%userdomain%
echo 本机IP: %IP2%
echo 本机网关:%Gateway2%
echo 本机DNS: %DNS2%
echo.
set /p n= 输入本机号(Q退出):
if %n% equ q exit
echo.
echo 您输入的机号是:%n%
echo.
set /p x= IP偏移机号多少位:
set /a ip = %n% + %x%
echo.
echo 正在修改,请稍等...
::::::::::::::::::::::::::::::::::::::::::::::
:生成vbs脚本,用来修改IP
echo strIPAddress = Array(^"192.168.1.%IP%^") ^'修改后的ip >>ip.vbe
echo strSubnetMask = Array(^"255.255.255.0^") ^'子网掩码 >>ip.vbe
echo strGateway = Array(^"192.168.1.1^") ^'网关 >>ip.vbe
echo arrDNSServers = Array(^"202.103.224.68^", ^"202.103.225.68^")^'DNS >>ip.vbe
echo strComputer = ^".^" >>ip.vbe
echo. >>ip.vbe
echo Set objWMIService = GetObject(^"winmgmts:^\\^" ^& strComputer ^& ^"^\root^\cimv2^") >>ip.vbe
echo Set colNetAdapters = objWMIService.ExecQuery _ >>ip.vbe
echo (^"Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE^") >>ip.vbe
echo. >>ip.vbe
echo For Each objNetAdapter in colNetAdapters >>ip.vbe
echo sip=objNetAdapter.IPAddress >>ip.vbe
echo ^'strIPAddress = sip ^'保持原来的ip >>ip.vbe
echo. >>ip.vbe
echo strGatewayMetric = Array(1) >>ip.vbe
echo errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask) >>ip.vbe
echo errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric) >>ip.vbe
echo errDNS=objNetAdapter.SetDNSServerSearchOrder(arrDNSServers) >>ip.vbe
echo exit for ^'只修改第一个网卡的设置 >>ip.vbe
echo Next >>ip.vbe
::::::::::::::::::::::::::::::::::::::::::::::
:用变量%n%去替换实际的计算机名
echo Windows Registry Editor Version 5.00 >计算机名.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] >>计算机名.reg
echo "NV Hostname"="%n%" >>计算机名.reg
echo "Hostname"="%n%" >>计算机名.reg
::::::::::::::::::::::::::::::::::::::::::::::
:导入注册表文件
regedit /s 计算机名.reg
::::::::::::::::::::::::::::::::::::::::::::::
:运行VBE文件更改IP地址
ip.vbe
::::::::::::::::::::::::::::::::::::::::::::::
:删reg和vbe文件
del 计算机名.reg
del ip.vbe
::::::::::::::::::::::::::::::::::::::::::::::
:再次检测IP,网关,DNS
@echo off
setlocal enabledelayedexpansion
set IP_num=0
set Gateway_num=0
set DNS_num=0
for /f "tokens=2* delims=:" %%i in ('ipconfig /all ^| find /i "IP Address"') do (
for /f "tokens=2* delims=:" %%a in ('ipconfig /all ^| find /i "Default Gateway"') do (
for /f "tokens=2* delims=:" %%1 in ('ipconfig /all ^| find /i "DNS Servers"') do (
set IP_=%%i
set Gateway_=%%a
set DNS_=%%1
if "!IP_num!"=="0" set IP2=!IP_:~1!
if "!Gateway_num!"=="0" set Gateway2=!Gateway_:~1!
if "!DNS_num!"=="0" set DNS2=!DNS_:~1!
set /a IP_num=!IP_num!+1
set /a Gateway_num=!Gateway_num!+1
set /a DNS_num=!DNS_num!+1
)
)
)
CLS
::::::::::::::::::::::::::::::::::::::::::::::
echo.
echo IP修改器 QQ:82288252
echo ================================================================================
echo 修改成功:
echo.
echo 现在本机信息:
echo 计算机名:%userdomain% 此项重启后生效
echo 本机IP: %IP2%
echo 本机网关:%Gateway2%
echo 本机DNS: %DNS2%
echo.
:按任意键退出
@pause
不知道高手能不能简化一下代码!
还有,子网掩码和备用DNS显示不出来,哪位高手知道怎么弄吗?
@echo off
mode con cols=80 lines=30
:top
title ………………………………………………IP修改器………………………………………………
cls
color 0a
::::::::::::::::::::::::::::::::::::::::::::::
:检测IP,网关,DNS
@echo off
setlocal enabledelayedexpansion
set IP_num=0
set Gateway_num=0
set DNS_num=0
for /f "tokens=2* delims=:" %%i in ('ipconfig /all ^| find /i "IP Address"') do (
for /f "tokens=2* delims=:" %%a in ('ipconfig /all ^| find /i "Default Gateway"') do (
for /f "tokens=2* delims=:" %%1 in ('ipconfig /all ^| find /i "DNS Servers"') do (
set IP_=%%i
set Gateway_=%%a
set DNS_=%%1
if "!IP_num!"=="0" set IP2=!IP_:~1!
if "!Gateway_num!"=="0" set Gateway2=!Gateway_:~1!
if "!DNS_num!"=="0" set DNS2=!DNS_:~1!
set /a IP_num=!IP_num!+1
set /a Gateway_num=!Gateway_num!+1
set /a DNS_num=!DNS_num!+1
)
)
)
CLS
::::::::::::::::::::::::::::::::::::::::::::::
echo.
echo IP修改器 QQ:82288252
echo ================================================================================
echo 本机信息:
echo 计算机名:%userdomain%
echo 本机IP: %IP2%
echo 本机网关:%Gateway2%
echo 本机DNS: %DNS2%
echo.
set /p n= 输入本机号(Q退出):
if %n% equ q exit
echo.
echo 您输入的机号是:%n%
echo.
set /p x= IP偏移机号多少位:
set /a ip = %n% + %x%
echo.
echo 正在修改,请稍等...
::::::::::::::::::::::::::::::::::::::::::::::
:生成vbs脚本,用来修改IP
echo strIPAddress = Array(^"192.168.1.%IP%^") ^'修改后的ip >>ip.vbe
echo strSubnetMask = Array(^"255.255.255.0^") ^'子网掩码 >>ip.vbe
echo strGateway = Array(^"192.168.1.1^") ^'网关 >>ip.vbe
echo arrDNSServers = Array(^"202.103.224.68^", ^"202.103.225.68^")^'DNS >>ip.vbe
echo strComputer = ^".^" >>ip.vbe
echo. >>ip.vbe
echo Set objWMIService = GetObject(^"winmgmts:^\\^" ^& strComputer ^& ^"^\root^\cimv2^") >>ip.vbe
echo Set colNetAdapters = objWMIService.ExecQuery _ >>ip.vbe
echo (^"Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE^") >>ip.vbe
echo. >>ip.vbe
echo For Each objNetAdapter in colNetAdapters >>ip.vbe
echo sip=objNetAdapter.IPAddress >>ip.vbe
echo ^'strIPAddress = sip ^'保持原来的ip >>ip.vbe
echo. >>ip.vbe
echo strGatewayMetric = Array(1) >>ip.vbe
echo errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask) >>ip.vbe
echo errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric) >>ip.vbe
echo errDNS=objNetAdapter.SetDNSServerSearchOrder(arrDNSServers) >>ip.vbe
echo exit for ^'只修改第一个网卡的设置 >>ip.vbe
echo Next >>ip.vbe
::::::::::::::::::::::::::::::::::::::::::::::
:用变量%n%去替换实际的计算机名
echo Windows Registry Editor Version 5.00 >计算机名.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] >>计算机名.reg
echo "NV Hostname"="%n%" >>计算机名.reg
echo "Hostname"="%n%" >>计算机名.reg
::::::::::::::::::::::::::::::::::::::::::::::
:导入注册表文件
regedit /s 计算机名.reg
::::::::::::::::::::::::::::::::::::::::::::::
:运行VBE文件更改IP地址
ip.vbe
::::::::::::::::::::::::::::::::::::::::::::::
:删reg和vbe文件
del 计算机名.reg
del ip.vbe
::::::::::::::::::::::::::::::::::::::::::::::
:再次检测IP,网关,DNS
@echo off
setlocal enabledelayedexpansion
set IP_num=0
set Gateway_num=0
set DNS_num=0
for /f "tokens=2* delims=:" %%i in ('ipconfig /all ^| find /i "IP Address"') do (
for /f "tokens=2* delims=:" %%a in ('ipconfig /all ^| find /i "Default Gateway"') do (
for /f "tokens=2* delims=:" %%1 in ('ipconfig /all ^| find /i "DNS Servers"') do (
set IP_=%%i
set Gateway_=%%a
set DNS_=%%1
if "!IP_num!"=="0" set IP2=!IP_:~1!
if "!Gateway_num!"=="0" set Gateway2=!Gateway_:~1!
if "!DNS_num!"=="0" set DNS2=!DNS_:~1!
set /a IP_num=!IP_num!+1
set /a Gateway_num=!Gateway_num!+1
set /a DNS_num=!DNS_num!+1
)
)
)
CLS
::::::::::::::::::::::::::::::::::::::::::::::
echo.
echo IP修改器 QQ:82288252
echo ================================================================================
echo 修改成功:
echo.
echo 现在本机信息:
echo 计算机名:%userdomain% 此项重启后生效
echo 本机IP: %IP2%
echo 本机网关:%Gateway2%
echo 本机DNS: %DNS2%
echo.
:按任意键退出
@pause

