首页 > 编程 > BAT > 正文

网管专用自动更改IP/机器名/工作组的批处理

2020-06-09 13:48:28
字体:
来源:转载
供稿:网友
本人负责的部门有上百台机器,重装完后需要恢复原有配置,我曾使用过很多方法:
1:手工更改,这条就不要说了
2:使用netsh dump +文件和 netsh -f +文件来更改,但是整个盘都格式化就没用.
3:使用专用的更改ip地址的小程序,但还是需要手工来指定IP

最后,我想到如下办法:
1:首先实现:netsh interface ip 来更改IP
2:使用wmic computersystem 修改工作组
3:使用reg add 来更改机器名
4:因为修改机器名后要重启才生效,于是使用:reboot.inf 来重启
5:后来增加了新机器名和ip的配置,使用机器的序列号(联想机:wmic bios get SerialNumber)来做机器名,ip地址最后1位使用随机
因为可以通过 wmic来读取序列号,那么我们可以用来登记本机的网络配置时,就方便多了.
6:最后将自己整理的IP地址等对应表放到了bat中,避免bat调用其他文件.
7:实现上面功能后,我就可以将该bat文件封装到gho文件里面,恢复重启完后就可以自动设置,我不要做其他操作,用户就可以使用.如果有必要,你可以加上执行完后自动删除本身.

整个代码如下:(欢迎大家继续优化和整理)
代码如下:
@echo off & code by m13632750052
for /f "tokens=12 delims= " %%i in ('ipconfig/all^|find "Physical Address"') do set localmac=%%i
echo 通过MAC地址%localmac%查找对应的机器名
for /f "skip=90 tokens=1,2,3,4 delims= " %%i in (%~f0) do (
if [%%k]==[%localmac%] set Name=%%i
if [%%k]==[%localmac%] set IP=%%j
if [%%k]==[%localmac%] set MAC=%%k
if [%%k]==[%localmac%] set Workgroup=%%l
set mask=255.255.0.0
set gway=168.30.1.233
set dns=168.1.4.147
set dns2=168.1.6.243
)
echo 显示查找结果 code by cn-dos breakme
if defined Name (echo %Name% %IP% %mac% %Workgroup%) else (goto newset)
:Enterset
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)

echo 修改工作组
wmic computersystem where Name="%Name%" call JoinDomainOrWorkgroup Name="%Workgroup%"
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表