求一批处理修改IP地址和计算机名

求一批处理修改IP地址和计算机名 要求是运行这个批处理程序提示输入一个数字 比如输入的数字是1 则ip地址换成192.168.0.1 同时计算机名字也变成aa1 若输入的数字是2 则IP地址变成192.168.0.2 计算机名变成aa2 。该批处理最好设置成运行一次后自动删除。如果更换计算机名过程中需要重启,请附带结束后重启代码。来高人。

如XP系统将以下代码另存为mach.bat 可满足你的要求(IP 计算机名称都可以任意填写或自动更改)
不过MAC设置 需要参考个人机器注册表网卡ID键值所以MAC设置以下代码并不通用 需要视情况改动 代码行上有说明视情况做更改
如使用IPV4或IPV6协议的需略微改下NETSH加载项接口名称 IP--IPV4或IPV6

@echo off
mode con cols=80 lines=27&color 1f
:start
rem eth //eth 为网卡名称,可在网络连接中查询,如"本地链接"
set eth="本地连接"
rem //设置菜单
echo 1 手动设置IP
echo 2 自动设置IP
echo 3 动态设置IP
echo 4 查看本机IP状况
echo 5 更改计算机名
echo 6 更改MAC
echo 7 退出
echo 8 重启
echo 9 DNS查询
set /p answer=请按数字选择:
if %answer%==1 goto 1
if %answer%==2 goto 2
if %answer%==3 goto 3
if %answer%==4 goto 4
if %answer%==5 goto 5
if %answer%==6 goto 6
if %answer%==7 goto 7
if %answer%==8 goto 8
if %answer%==9 goto 9dns
cls
echo --------------------------------
if "%answer%"=="%answer%" echo 输入错误,请重新输入正确数字选项
echo --------------------------------
goto :start
:1
echo 请输入IP 例如:192.168.1.XXX
set /p A=IP:
echo %A%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$">nul||goto fail
set _A=%A:.= %
call :check %_A%
:check
if "%4"=="" goto fail
for %%i in (%1 %2 %3 %4) do (
if %%i gtr 255 goto fail
)
goto A1
:fail
cls
echo 格式错误,请重新输入
echo.
goto :1
:A1
echo 正在检查网络. . .
echo.
for /f "tokens=1 delims= " %%i in ('arp -a^|find " "') do set gw=%%i
if %gw%==No goto A2
echo 网关的地址为%gw%
echo.
goto 1b
:A2
echo 无网络数据
echo.
:1b
echo 请输入网关 例如:192.168.1.1
set /p B=网关:
echo %B%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$">nul||goto fail
set _B=%B:.= %
call :check %_B%
:check
if "%4"=="" goto fail
for %%i in (%1 %2 %3 %4) do (
if %%i gtr 255 goto fail
)
goto 1c
:fail
echo 格式错误,请重新输入
echo.
goto :1b
:1c
echo.
echo 请输入DNS 请正确输入本省DNS如不清楚请查询
set /p C=DNS:
echo %C%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$">nul||goto fail
set _C=%C:.= %
call :check %_C%
:check
if "%4"=="" goto fail
for %%i in (%1 %2 %3 %4) do (
if %%i gtr 255 goto fail
)
goto 1d
:fail
echo 格式错误,请重新输入
echo.
goto :1c
:1d
rem ip //ip 为你想更改的IP
set ip=%A%
rem gateway //gateway 为网关地址
set gateway=%B%
rem netmasks //netmasks 为子网掩码
set netmasks=255.255.255.0
rem dns //dns 为首选DNS
set dns=%C%
echo 正在将本机IP更改到: %ip% 请等候...
rem
if %gateway%==none netsh interface ip set address %eth% static %ip% %netmasks% %gateway% > nul
if not %gateway%==none netsh interface ip set address %eth% static %ip% %netmasks% %gateway% 1 > nul
if %dns%==none netsh interface ip set dns %eth% static %dns%> nul
if not %dns%==none netsh interface ip set dns %eth% static %dns%> nul
echo...................
echo 检查更改后本机IP:
echo...................
ipconfig /ALL
echo 成功将本机IP更改为%ip%!
pause>nul
CLS
goto :start
:2
echo 正在进行本地IP设置,请稍等...
rem //以下设置可以根据需要更改 依次为IP 掩码 网关 首选DNS 备选DNS
netsh interface ip set address %eth% static 192.168.1.24 255.255.255.0 192.168.1.1 1
netsh interface ip set DNS %eth% static 61.139.2.69
netsh interface ip add dns %eth% 202.98.96.68 index=2
if exist %SystemRoot%\setupapi.log del /q %SystemRoot%\setupapi.log
echo ----
echo 全部设置完成!
pause>nul
goto :start
:3
echo 正在进行动态IP设置,请稍等...
echo. IP 地址正在从DHCP自动获取...
netsh interface ip set address %eth% dhcp
echo. DNS地址正在从DHCP自动获取...
netsh interface ip set dns %eth% dhcp
echo ----
echo 全部设置完成!
pause
goto :start
:4
echo 检查%eth%状况
ipconfig /all
pause>nul
goto :start
:5
echo 输入计算机名:
set /p Name=

for /l %%i in (3,-1,0) do ping -n 2 127.0.0.%%i>nul && @echo. %%i s 后修改机器名……

reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam" /v @ /t REG_SZ /d "%Name%" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v "ComputerName" /t REG_SZ /d "%Name%" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName" /v "ComputerName" /t REG_SZ /d "%Name%" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Eventlog" /v "ComputerName" /t REG_SZ /d "%Name%" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v "ComputerName" /t REG_SZ /d "%Name%" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d "%Name%" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "Hostname" /t REG_SZ /d "%Name%" /f
echo 刷新注册表. . .
if exist c:\winnt (secedit /refreshpolicy machine_policy /enforce) else (gpupdate /force)
PAUSE
GOTO :start
:6
for /f "tokens=12 delims= " %%i in ('ipconfig/all^|find "Physical Address"') do set localmac=%%i
echo 当前MAC地址:%localmac%
:6v
echo ----------------------------
echo 输入MAC格式:11-22-33-44-55-66
echo.
echo.
set /p macx=输入MAC地址:
::----------------------------以下为判断MAC地址格式正误代码
echo %macx%|findstr "^[0-F][0-F]\-[0-F][0-F]\-[0-F][0-F]\-[0-F][0-F]\-[0-F][0-F]\-[0-F][0-F]$">nul||goto fail
echo.
goto 6x
:fail
cls
echo %macx% 错误的mac请重新输入
echo.
goto :6v
:6x
::-----------------------------以下为将11-22-33-44-55-66格式转换为注册表要求格112233445566值赋予mac
set mac=%macx:-=%
::------------------------------
goto 6r

::这段代码无效---------------------------------------------------------------------------------无效
goto :6a
:6a
echo -------------------------
set /p mac=输入MAC:
call :stringlenth "%mac%" num ::判断数据长度
:6a1
if "%num%"=="17" goto :6r
echo 长度不符合要求,请重新输入
goto 6a
:StringLenth ::判断数据长度计算子程序
set theString=%~1
if not defined theString goto :6a1
set Return=0
:StringLenth_continue
set /a Return+=1
set thestring=%thestring:~0,-1%
if defined thestring goto StringLenth_continue
if not "%2"=="" set %2=%Return%
goto :6a1
::-----------------------------------------------------------------------------------------------无效

:6r
for /l %%i in (5,-1,0) do ping -n 2 127.0.0.%%i>nul && @echo. %%i s 后修改MAC……
::下面那个0009项是本人网卡ID所在项并不通用;不同机器对应项目不尽相同需要翻查注册表从0000 0001..这些项目下查一一看DriverDesc的键值是否对应的是正在使用网卡的名称然后做更改
reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0009" /v "NetworkAddress" /t REG_SZ /d "%mac%" /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0009\Ndi\Params\NetworkAddress" /v "Default" /t REG_SZ /d "%mac%" /f
echo 刷新注册表. . .
if exist c:\winnt (secedit /refreshpolicy machine_policy /enforce) else (gpupdate /force)
PAUSE
GOTO :start
:7
echo bye!
goto end
:8
echo 请输入ok确认重启,输入yes重启并且删除本批处理文件
set /p f=
if %f%==ok goto :9
if %f%==yes goto :10
cls
echo -------------------
if "%f%"=="%f%" echo 输入错误返回主菜单
echo -------------------
goto :start

:9
for /l %%i in (5,-1,0) do ping -n 2 127.0.0.%%i>nul && @echo. %%i s 后重启电脑……
setlocal
cd/d %temp%
echo [version] > reboot.inf
set inf=InstallHinfSection DefaultInstall
echo signature=$chicago$ >> reboot.inf
echo [defaultinstall] >> reboot.inf
rundll32 setupapi,%inf% 1 %temp%\reboot.inf
del reboot.inf
EXIT
:10
shutdown -r -t 5
del reboot.inf
del .\mach.bat
EXIT

:9dns
goto dnstest
:dnsress
set n=*
CLS
echo 输入查询省份的拼音字母缩写 如:内蒙古NMG(无大小写区分), 如有相同缩写请打全拼音
echo.
set /p sheng=请输入:
echo %sheng%|findstr/i "^[A-Z]*$">nul||goto fail
type DNSTEST.txt|findstr/i "\<%sheng%\>"||goto fail

echo.
:eu
echo.
set jxb=
set /p jxb=是否继续?(输入y继续,回车返回):
echo.
echo %jxb%|findstr/i "^[Y]$">nul||goto deltest
goto dnsress
:deltest
del .\DNSTEST.txt
goto start
:fail
echo.
echo 输入有误
pause>nul

goto dnstest

:dnstest
::-----:以下为电信接入的DNS 其它的可自己按格式更新或添加
echo GD 广东 202.96.128.143 >>DNSTEST.txt
echo SZ 深圳 202.96.134.133 >>DNSTEST.txt
echo SC 四川 61.139.2.69 >>DNSTEST.txt
echo GX 广西 202.96.128.68 >>DNSTEST.txt
echo HENAN 河南 202.102.227.68 >>DNSTEST.txt
echo FJ 福建 218.85.157.99 >>DNSTEST.txt
echo SHANXI 陕西 202.100.13.11 >>DNSTEST.txt
echo XM 厦门 202.101.103.55 >>DNSTEST.txt
echo HUNAN 湖南 202.103.0.68 >>DNSTEST.txt
echo JS 江苏 202.102.15.162 >>DNSTEST.txt
echo HB 湖北 202.103.0.68 >>DNSTEST.txt
echo SD 山东 202.102.154.3 >>DNSTEST.txt
echo ZJ 浙江 202.96.102.3 >>DNSTEST.txt
echo LN 辽宁 202.98.0.68 >>DNSTEST.txt
echo AH 安徽 202.102.192.68 >>DNSTEST.txt
echo HB 河北 202.99.160.68 >>DNSTEST.txt
echo JL 吉林 202.98.5.68 >>DNSTEST.txt
echo JX 江西 202.101.224.68 >>DNSTEST.txt
echo XJ 新疆 61.128.99.133 >>DNSTEST.txt
echo GZ 贵州 202.98.192.68 >>DNSTEST.txt
echo YN 云南 202.98.96.68 >>DNSTEST.txt
echo HLJ 黑龙江 202.97.229.133 >>DNSTEST.txt
echo NMG 内蒙古 202.99.224.68 >>DNSTEST.txt
echo QH 青海 202.100.128.68 >>DNSTEST.txt
echo XZ 西藏 219.151.32.66 >>DNSTEST.txt
echo HAINAN 海南 202.100.192.68 >>DNSTEST.txt
echo NX 宁夏 202.100.0.68 >>DNSTEST.txt
echo GS 甘肃 202.100.72.13 >>DNSTEST.txt
echo SX 山西 202.99.192.68 >>DNSTEST.txt
echo BJ 北京 202.96.199.133 >>DNSTEST.txt
echo SH 上海 202.96.199.132 >>DNSTEST.txt
echo TJ 天津 202.99.96.68 >>DNSTEST.txt
echo CQ 重庆 61.128.128.68 >>DNSTEST.txt
echo XG 香港 205.252.144.228 >>DNSTEST.txt
echo AM 澳门 202.175.3.8 >>DNSTEST.txt
goto dnsress
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-09
开代理吧..到网上找免费代理IP.那的都有..
如果是ADSL(宽带连接上网)可以把网断了.再连IP就变了.
ADSL.是连一次网.IP自动换一次..动态IP..
第2个回答  2010-12-02
@echo off
netsh int ip set add 本地连接 static 192.168.88.8 255.255.255.0 192.168.88.1 1
netsh int ip set dns 本地连接 static 219.150.32.132
netsh int ip add dns 本地连接 219.146.0.130

写不下去了,5分。。。在长点?。。。涨得越高,写的越多~~ — —本回答被网友采纳
第3个回答  2010-12-02
这个好像没有,因为在配置过程中,一般会采用在一台PC机上,通过软件自动分配给局域网中机器静态IP,这种方法是现在最常用的,你可以试试》
第4个回答  2010-12-02
你要是行不通可以 换一块以太网卡 试试看
相似回答