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

本人负责的部门有上百台机器,重装完后需要恢复原有配置,我曾使用过很多方法:
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%"
wmic computersystem where Name="%ComputerName%" call JoinDomainOrWorkgroup Name="%Workgroup%"

echo 修改IP
::查找MAC所对应的连接名称
for /f "tokens=1,2,3,4,5,6 delims=-" %%A in ("%MAC%") do set MacWMIC=%%A:%%B:%%C:%%D:%%E:%%F
for /f "skip=2 tokens=2* delims==" %%A in ('WMIC NIC WHERE "MACAddress='%MacWMIC%' AND NetConnectionID!=NULL" GET NetConnectionID /value') do set "ConnName=%%A"
if not defined ConnName set ConnName="本地连接"
netsh interface ip set address name="%ConnName%" source=static addr=%IP% mask=%mask%
netsh interface ip set address name="%ConnName%" gateway=%gway% gwmetric=0
netsh interface ip set dns name="%ConnName%" source=static addr=%dns% register=PRIMARY
netsh interface ip add dns name="%ConnName%" addr=%dns2% index=2
netsh interface ip set wins name="%ConnName%" source=static addr=none

echo arp绑定 %IP% %MAC%
arp -d
arp -s %IP% %MAC%
echo arp绑定网关 %gway%,如果网络不通,将使用默认网关的MAC:00-00-5e-00-01-01
ping -n 2 %gway%>nul 2>nul
if [%ERRORLEVEL%]==[1] (set GateMac=00-00-5e-00-01-01) else (
for /f "skip=3 tokens=2" %%H in ('arp -a %gway%') do set GateMac=%%H
)
cmd /c arp -s %gway% %GateMac%

for /l %%i in (3,-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

:newset
echo 您的机器可能是新机器,需要手工输入ip
for /f "tokens=1,2 delims==" %%i in ('wmic bios get SerialNumber /value^|find "="') do set Name=%%j
if not defined Name set /p Name=请输入新机器的名字
echo 机器名:%Name%
call :select "Physical Address" "mac"
echo mac :%mac%
set /a aa=%random%%%9
set IP=168.30.7.1%aa%
set mask=255.255.0.0
set gway=168.30.1.233
set dns=168.1.4.147
set dns2=168.1.6.243
set Workgroup=vga00l
echo IP 配置: %ip% %mask% %gway% %dns% %dns2% %Workgroup%
for /l %%i in (5,-1,0) do ping -n 2 127.0.0.%%i>nul && @echo. %%i s 后修改机器名……
goto Enterset

:select
for /f "tokens=2 delims=:" %%i in ('ipconfig /all ^| findstr /i /c:%1') do if not "!%~2!" == "" set "%~2=%%i"
GOTO :eof

时间: 2024-09-17 04:28:34

网管专用自动更改IP\机器名\工作组的批处理_DOS/BAT的相关文章

自动克隆guest为administrators组的批处理_DOS/BAT

复制代码 代码如下: @echo guest.bat ^<zpid^> ^<password^> @echo __________________________________________________________ @rem 本guest.bat自动克隆guest为administrators组. @rem 如果存在username表示在终端登陆的环境运行bat.需要手工输入pid值. @rem 最好先手工修改密码.执行本程序两次.哈哈. 主要是没有掩饰.regedit

检测ip格式是否正确的批处理_DOS/BAT

复制代码 代码如下: @echo off :: 检测IP格式是否标准 :: code by jm 2006-10-23 :begin cls set input= set /p input=请输入IP: echo %input%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$">nul||goto fail set _input=%input:.= % call :check %_input% :check if "%4"=

SunTB编写IP地址设置切换批处理_DOS/BAT

修正一个提取网络连接名称的错误,原因在于之前在FOR中使用空格作为分隔符 如果网络连接名为"本地连接 2",原来只会识别成"本地连接",从而导致设置失败 现已更正 说明:1.可以选择要设置的网络连接 2.可以手动设定固定IP,也可以通过DHCP自动获取 3.可以在批处理中预设多组MAC与IP对应数据,当内网有MAC绑定时可快速查询相应IP 4.DNS设置提供四类数据(中国电信. 中国联通/中国网通.中国移动/ 国铁通.内网网关) DNS为福州地区数据,请自行更改为当

Windows下通过bat获取网络连线实际名称,加强IP类设置脚本的兼容性_DOS/BAT

其中比较难解决的问题就是获取网络连线的实际名称,大部分人使用的IP设置脚本都是将[本地连接]写死在代码中,可实际上并不是所有电脑都叫本地连接:比如有的用户电脑可能升级了网卡驱动,或者更换了网卡,导致网络连线的名称变成"本地连接2",又比如有无聊好事者(某产线的作业员电脑),将网络连线的名称各种DIY,我就见过一个修改成"操蛋的青春",瞬间无语! 好了,废话不多说,直接上菜! 对于网络连线的实际名称,可能出现的情况有: 1.网卡更换/驱动升级导致名称变更,比如本地连接

防arp欺骗的批处理 自动绑定网关的批处理_DOS/BAT

将下面的代码.保存为doarp.bat添加到自动运行即可. 复制代码 代码如下: @echo OFF if %~n0==arp exit if %~n0==Arp exit if %~n0==ARP exit echo 正在获取本机信息..... :IP FOR /f "skip=13 tokens=15 usebackq " %%i in (`ipconfig /all`) do Set IP=%%i && GOTO MAC :MAC echo IP:%IP% FOR

自动检测所有盘然后删除所有分区的默认共享的批处理_DOS/BAT

删除所有分区的默认共享.bat 复制代码 代码如下: @echo off :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: ::     先列举存在的分区,然后再逐个删除以分区名命名的共享: ::     通过修改注册表防止admin$共享在下次开机时重新加载:  ::     IPC$共享需要administritor权限才能成功删除 :: ::                             jm 改动

远程批量修改计算机IP设置的批处理_DOS/BAT

网络IP设置远处更改脚本. 当网络整改需要大量IP修改的时候,可利用该脚本进行更改(重启计算机前不生效,可继续工作),然后等下班时间修改交换机配置,次日所有计算机启动后就可以用新IP工作了. 前提条件,知道域管理员密码或者所有计算机的本机管理员密码(后者比较麻烦),客户计算机为WIN2K或XP(防火墙开放135-139端口). 一条命令批量修改: for /l %i in (2,1,254) do net use //192.168.0.%i /user:admin@domain.com "pa

全盘搜索指定文件并拷贝到指定位置[自动重命名]的批处理_DOS/BAT

复制代码 代码如下: @echo off&setlocal enabledelayedexpansion set num=0 set /p filename=请输入要查找的文件名[包含文件扩展名]: set /p newpath=请输入所要拷贝到的指定目录: if not exist !newpath! md !newpath! 1>nul 2>nul set zh=!newpath:~-1! if !zh! NEQ "\" set newpath=!newpath

用批处理一键安装两种扩展名的Windows系统补丁_DOS/BAT

每个人都可能重装过操作系统.可每次安装好操作系统后花费时间最长的就是下载补丁安装补丁了,往往下载补丁安装补丁都花去了大半天的事情,在Vista以后,微软发布的补丁大都是msu的,当然也有少部份还是以前的exe.下面介绍一种针对这两种扩展名的系统补丁快速安装的办法. 借助软件下载最新的系统补丁并保存在spacks文件夹,在该文件夹内新建一文本文件,输入以下代码 @Echo Off Title Install Windows Update pack Echo 正在安装Windows系统补丁,请稍等.