網管專用自動更改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%"