WINDOWS批处理应用1-更改计算机参数

window批处理脚本 专栏收录该内容
6 篇文章 0 订阅

WINDOWS批处理应用1-更改计算机参数

应用场景

这两天公司网络要进行整体规划,有一个需求是每台电脑要按照规划重命名电脑名,重设ip,我当时接到这个需求几近崩溃,后来一想,为什么不写个脚本每个电脑运行一下,好赖是减少点工作量,于是在实施前的一个下午研究了下windows脚本。

明确需求:

  • 重命名电脑名字,要求格式:每个部门标识名+自增数字,比如 YanFa_100
  • 重设ip,要求ip末位同电脑名字后面的自增数字一样,比如192.168.1.100

为了实现这两个需求,我先花了一段时间学习了下批处理的基本知识。这里我就先不科普基本知识,批处理关于入门知识的相关文章会在后边逐渐发布,这里只针对功能性的要求给出相应的代码,方便同学们拿来使用。

代码片段:

更改计算机名字

@echo off
set /p NewName=输入要更改成的名字:
echo 要将计算机名称更改成:%NewName%
wmic computersystem where "PrimaryOwnerName='%username%'" call rename "%NewName%"
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ActiveComputerName" /v ComputerName /t reg_sz /d %NewName% /f
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t reg_sz /d %NewName% /f
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v Hostname /t reg_sz /d %NewName% /f
echo ————————————————————更改计算机名称成功!—————————————
echo 已经更改为:
hostname

更改电脑ip,网关,dns,掩码

@echo off
set /p NewIp=要更改的ip:
set /p NewMask=掩码将要更改为:
set /p NewGateway=网关将要更改为:
set /p NewDns=DNS将要更改为:
set /p BackupDns=备用DNS:
FOR /F "tokens=2 delims==," %%i in ('wmic nic where "NetConnectionStatus=2 and (netconnectionid like "%%以太网%%" or netconnectionid like "%%本地连接%%")" get netconnectionid /VALUE') DO set lanAdapter=%%i
echo 正在更改适配器是:%lanAdapter% 适配器
echo Ip将要更改为:%NewIp%
echo 掩码将要更改为:%NewMask%
echo 网关将要更改为:%NewGateway%
echo DNS将要更改为:%NewDns%
echo 备用DNS:%BackupDns%

FOR /F "tokens=2 delims==," %%j in ('wmic nic where "netconnectionid="%lanAdapter%"" get MACAddress /VALUE') DO set macAddress=%%j

if "%lanAdapter%"=="" (
	echo ———————————————"获取适配器为空!更改失败!"————————————————
	pause
	exit
)else (
	netsh interface ip set address name="%lanAdapter%" source=static addr=%NewIp% mask=%NewMask% gateway=%NewGateway% gwmetric=0
	netsh interface ip set dns name="%lanAdapter%" source=static addr=%NewDns% register=PRIMARY
	netsh interface ip add dns "%lanAdapter%" %BackupDns%
	echo ————————————————网络更改成功!!!!!!————————————————
	netsh interface ip show config "%lanAdapter%"
	netsh interface ip show dnsservers "%lanAdapter%"
)
pause

更改电脑名字和ip,dns,网关并获取MAC地址

下面的脚本是真正完成我们开篇要提的需求,它需要在同级目录下有一个名为“num.txt”的文本文件才能运行,这个文本文件是一个数字,也就是电脑名和ip的自增部分。将这个程序和num.txt放在u盘,插在要更改的每台电脑上,运行下,num.txt中的数字会加1,拔下u盘插在下一个要运行的电脑上,如此便可自动更改每台电脑的名字和ip。同时,脚本会获取每台电脑的MAC地址并存在以当前数字命名的文本文件中,同学们如需在更改名字的同时要获取其他信息,可自行更改脚本。

@echo off

set ComputerNamePrefix=YanFa_
set IpPrefix=10.0.0.
set NewMask=255.255.255.0
set NewGateway=10.0.0.254
set NewDns=10.0.100.1
set BackupDns=10.0.100.2

::——————————————————以下代码不能更改!!!!!!————————————————
set ConfigFile=%~dp0"num.txt"
set /p CurrentNum=<%ConfigFile%
set MacFile=%~dp0%CurrentNum%".txt"
echo 当前的计算是第:%CurrentNum% 台
set NewName=%ComputerNamePrefix%%CurrentNum%
echo 要将计算机名称更改成:%NewName%
set NewIp=%IpPrefix%%CurrentNum%


wmic computersystem where "PrimaryOwnerName='%username%'" call rename "%NewName%"
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ActiveComputerName" /v ComputerName /t reg_sz /d %NewName% /f
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t reg_sz /d %NewName% /f
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v Hostname /t reg_sz /d %NewName% /f

echo ————————————————更改计算机名字成功!——————————————已经更改为:
hostname



FOR /F "tokens=2 delims==," %%i in ('wmic nic where "NetConnectionStatus=2 and (netconnectionid like "%%以太网%%" or netconnectionid like "%%本地连接%%")" get netconnectionid /VALUE') DO set lanAdapter=%%i
echo 正在更改适配器是:%lanAdapter%适配器
echo Ip将要更改为:%NewIp%
echo 掩码将要更改为:%NewMask%
echo 网关将要更改为:%NewGateway%
echo DNS将要更改为:%NewDns%
echo 备用DNS:%BackupDns%

FOR /F "tokens=2 delims==," %%j in ('wmic nic where "netconnectionid="%lanAdapter%"" get MACAddress /VALUE') DO set macAddress=%%j
>%MacFile% echo %macAddress%
set /a CurrentNum=%CurrentNum%+1
>%ConfigFile% echo %CurrentNum%


if "%lanAdapter%"=="" (
	echo "——————————————获取适配器为空!更改失败!——————————————————"
	pause
	exit
)else (
	netsh interface ip set address name="%lanAdapter%" source=static addr=%NewIp% mask=%NewMask% gateway=%NewGateway% gwmetric=0
	netsh interface ip set dns name="%lanAdapter%" source=static addr=%NewDns% register=PRIMARY
	netsh interface ip add dns "%lanAdapter%" %BackupDns%
	echo ———————————————网络更改成功!!!!!!————————————————
	netsh interface ip show config "%lanAdapter%"
	netsh interface ip show dnsservers "%lanAdapter%"
)


pause

显示更改的计算机信息
@echo off
echo ——————————————————计算机名字:————————————————————
hostname

echo ——————————————————网络信息:——————————————————————

FOR /F "tokens=2 delims==," %%i in ('wmic nic where "NetConnectionStatus=2 and (netconnectionid like "%%以太网%%" or netconnectionid like "%%本地连接%%")" get netconnectionid /VALUE') DO set lanAdapter=%%i

echo ————————正在更改的适配器:%lanAdapter%——————————————
netsh interface ip show config "%lanAdapter%"
netsh interface ip show dnsservers "%lanAdapter%"

FOR /F "tokens=2 delims==," %%j in ('wmic nic where "netconnectionid="%lanAdapter%"" get MACAddress /VALUE') DO set macAddress=%%j
echo %macAddress%
pause
  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

木叶清风谢

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值