IT天空

 找回密码
 加入我们

手机号码,快捷登录

搜索

[求助] 批处理修改局域网计算机名 ip dns

[复制链接]
zxcvghjmk 发表于 2022-4-17 08:18:33 | 显示全部楼层 |阅读模式

IT天空 定制版高速U盘 128G | 固态U盘 256G Pro/512G Pro
如下代码 在win10 系统下修改失败  请大佬帮忙修改

  • @echo off
  • ::1.设置环境变量
  • set MASK=255.255.255.0
  • set GATEWAY=192.168.31.1
  • set DNS1=114.114.114.114
  • set DNS2=114.114.114.110
  • set WINS=192.168.31.1
  • set run_log=%temp%\run_log.txt
  • ::2.运行环境检查
  • echo. >%run_log%
  • echo. >>%run_log%
  • echo ======================================>>%run_log%
  • echo 运行时间 %date% %time% >>%run_log%
  • echo ======================================>>%run_log%
  • del %temp%\mac.txt >nul 2>nul
  • del %temp%\a.txt >nul 2>nul
  • wmic nic >nul 2>nul
  • wmic nic >nul 2>nul >%temp%\a.txt && (find /i "MACAddress"  %temp%\a.txt >nul 2>nul || echo ************运行权限不够,请以管理员运行*****************  >>%run_log% && start  %run_log% &&exit)
  • ::3.获取本机所有MAC,地址,格式为 XX-XX-XX-XX-XX-XX
  • wmic nic get MACAddress >%temp%\name.txt && for /f "skip=1" %%i in ('type %temp%\name.txt') do for /f "tokens=1-6 delims=:" %%I in ("%%i") do echo %%I-%%J-%%K-%%L-%%M-%%N>>%temp%\mac.txt
  • ::4.将获取到的本机MAC地址逐一到本批处理后面的列表去查找,匹配的通常是本地连接的MAC连接,将匹配的MAC地址保存下来。
  • ::      注1:这种方式可以应对电脑上安装虚拟机,或者机器是win7及以上的系统,会有多个MAC。
  • ::      注2:至少要有一个匹配MAC,如果找不到任何匹配MAC,则报错退出。这可以避免在没有收集MAC的机器上运行时,错误修改原来的信息。
  • del %temp%\exist-mac.txt   >nul 2>nul
  • for /f  %%i in (%temp%\mac.txt) do find /i "%%i" %0 >nul 2>nul && echo %%i>%temp%\exist-mac.txt
  • if exist %temp%\exist-mac.txt (for /f %%i in (%temp%\exist-mac.txt) do set MAC=%%i) else (echo ************未找到匹配的MAC项,中断批处理执行************  >>%run_log%   &&start %run_log%  &&exit)
  • ::5.获取找到MAC地址对应的网络连接名称,通常是本地连接,
  • ::      注1:对于一些多网卡环境,如机器装有多块网卡,会生成本地连接 2的名称, 注意:2前面有个空格,
  • ::      注2:还有一种情况,本地连接的名称被改,在学校机房,干这种事情的人大有人在
  • for /f "tokens=1-6 delims=-" %%i in ("%MAC%") do set MAC1=%%i:%%j:%%k:%%l:%%m:%%n
  • wmic nic where MACaddress="%MAC1%" get NetConnectionID >%temp%\mac1.txt && for /f "tokens=* skip=1" %%i in ('type %temp%\mac1.txt') do if NOT "%%i"=="" set NetConnectionID=%%i
  • :intercept
  • if "%NetConnectionID:~-1%"==" " set "NetConnectionID=%NetConnectionID:~0,-1%"&goto intercept
  • ::6.获取预设的计算机名\IP地址\计算机描述信息
  • for /f "tokens=1-4" %%i in ('more /e +10 %0 ^|find /i "%mac%"') do set name=%%i&& set IP=%%j&&  set desc=%%l
  • if "%name%"=="" (echo ********************匹配MAC预设计算机信息不存在,本程序将退出********************  >>%run_log%   &&start %run_log%  &&exit)
  • if "%ip%"==""   (echo ********************匹配MAC预设IP地址信息不存在,本程序将退出********************  >>%run_log%   &&start %run_log%  &&exit)
  • if "%desc%"=="" (echo ********************匹配MAC预设计算机描述信息不存在,本程序将退出******************  >>%run_log%   &&start %run_log%  &&exit)
  • for /f "tokens=1-3 skip=2" %%i in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\lanmanserver\parameters" /v srvcomment 2^>nul') do set current_desc1=%%k
  • for /f "tokens=1-3 skip=2" %%i in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters" /v srvcomment 2^>nul') do set current_desc2=%%k
  • wmic nicconfig where MACaddress="%MAC1%" get IPaddress>%temp%\a.txt && for /f "skip=1 delims=,{} " %%i in ('type %temp%\a.txt') do set current_ip=%%~i
  • wmic nicconfig where MACaddress="%MAC1%" get IPSubnet>%temp%\a.txt &&for /f "skip=1 delims=,{} " %%i in ('type %temp%\a.txt') do set IPSubnet=%%~i
  • wmic nicconfig where MACaddress="%MAC1%" get DefaultIPGateway>%temp%\a.txt &&for /f "skip=1 delims=,{} " %%i in ('type %temp%\a.txt') do set DefaultIPGateway=%%~i
  • wmic nicconfig where MACaddress="%MAC1%" get DNSServerSearchOrder >%temp%\a.txt  && for /f "tokens=1-8 skip=1 delims=,{} " %%i in ('type %temp%\a.txt') do set current_DNS1=%%~i& set current_DNS2=%%~j& set DNS3=%%~k&  set DNS4=%%~l
  • wmic nicconfig where MACaddress="%MAC1%" get WINSPrimaryServer>%temp%\a.txt &&for /f "skip=1 delims=,{} " %%i in ('type %temp%\a.txt') do set WINSPrimaryServer=%%i
  • echo. **************************信息汇总********************************
  • echo  网络连接名称    【%NetConnectionID%】
  • echo  MAC地址为       【%mac%】
  • echo  当前IP地址      【%current_ip%】 预设IP地址     【%IP%】
  • echo  当前子网掩码    【%IPSubnet%】 预设子网掩码   【%MASK%】
  • echo  当前默认网关    【%DefaultIPGateway%】 预设默认网关   【%GATEWAY%】
  • echo  当前DNS1        【%current_DNS1%】 预设DNS1       【%DNS1%】
  • echo  当前DNS2        【%current_DNS2%】 预设DNS2       【%DNS2%】
  • echo  当前WINS服务器  【%WINSPrimaryServer%】 预设WINS服务器 【%WINS%】
  • echo.
  • echo  当前计算机名    【%current_name1%】 预设计算机名   【%name%】
  • echo  当前描述        【%current_desc1%】 预设计算机描述 【%desc%】
  • echo. *********************************************************************
  • echo.
  • ::7.执行判断、修改计算机名\IP地址\计算机描述信息
  • if "%current_desc1%"=="%desc%" (echo 计算机注释1符合要求,跳过修改>>%run_log% ) else (echo 正在修改计算机注释1 && reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\lanmanserver\parameters" /v srvcomment /t reg_sz /d %desc% /f >nul 2>nul    && echo 修改计算机注释1成功 >>%run_log% || echo  ********************修改计算机注释1失败 ********************   >>%run_log%)
  • if "%current_desc2%"=="%desc%" (echo 计算机注释2符合要求,跳过修改>>%run_log%) else (echo 正在修改计算机注释2 && reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters" /v srvcomment /t reg_sz /d %desc% /f >nul 2>nul && echo 修改计算机注释2成功>>%run_log%  || echo  ********************修改计算机注释2失败 ********************  >>%run_log%)
  • if "%name%"=="%computername%" (
  •     >>%run_log% echo 计算机名符合要求,跳过修改
  • ) else (
  •     echo 正在修改计算机名
  •     wmic computersystem where "name='%computername%'" call rename %name%
  •     if errorlevel 1 (
  •         >>%run_log% echo ********************修改计算机名失败 ********************
  •     ) else (
  •         >>%run_log%echo 修改计算机名成功
  •     )
  • )
  • if "%current_ip%"=="%IP%" (echo IP地址符合要求,跳过修改>>%run_log%) else (set change_pro=IP地址)
  • if "%IPSubnet%"=="%MASK%" (echo 子网掩码符合要求,跳过修改>>%run_log%) else (set change_pro=%change_pro%、子网掩码)
  • if "%DefaultIPGateway%"=="%GATEWAY%" (echo 默认网关地址符合要求,跳过修改>>%run_log%) else (set change_pro=%change_pro%、默认网关)
  • if "%change_pro%"==""  (echo IP地址\子网掩码\默认网关符合要求,跳过修改>>%run_log%) else   (echo 正在修改%change_pro% &&  netsh interface ip set address "%NetConnectionID%" static %IP% %Mask% %GATEWAY% 1 >nul 2>nul   && echo 修改%change_pro%成功 >>%run_log%   || echo  ********************修改%change_pro%失败 ********************  >>%run_log%)
  • if "%current_DNS1%"=="%DNS1%" (echo DNS1地址符合要求,跳过修改>>%run_log%) else (echo 正在修改DNS1地址 &&  netsh interface ip set dns "%NetConnectionID%" static %DNS1% register=PRIMARY >nul 2>nul   && echo 修改DNS1地址成功 >>%run_log%   || echo  ********************修改DNS1地址失败 ********************  >>%run_log%)
  • if "%current_DNS2%"=="%DNS2%" (echo DNS2地址符合要求,跳过修改>>%run_log%) else (echo 正在修改DNS2地址 &&  netsh interface ip add dns "%NetConnectionID%"  %DNS2% index=2 >nul 2>nul   && echo 修改DNS2地址成功 >>%run_log%   || echo  ********************修改DNS2地址失败 ********************  >>%run_log%)
  • if "%WINSPrimaryServer%"=="%WINS%" (echo WINS地址符合要求,跳过修改>>%run_log%) else (echo 正在修改WINS地址 &&  netsh interface ip set wins "%NetConnectionID%" static %WINS%  >nul 2>nul  && echo 修改WINS地址成功 >>%run_log%   || echo  ********************修改WINS地址失败 ********************  >>%run_log%)
  • start %run_log%
  • exit
  • ::以下为预设信息区域
  • 计算机名        新规划地址        MAC地址        计算机描述
  • 12F-JF01-A002        192.168.12.102        54-04-a6-66-bd-bd        12楼机房A02
  • 12F-JF01-A003        192.168.12.103        00-30-67-ba-0c-ac        12楼机房A03
  • 12F-JF01-A004        192.168.12.104        00-e0-62-0b-1f-6c        12楼机房A04
  • 12F-JF01-A005        192.168.12.105        bc-ae-c5-5d-65-c0        12楼机房A05
  • 12F-JF01-A006        192.168.12.106        00-e0-66-02-29-5e        12楼机房A06
  • 12F-JF01-A007        192.168.12.107        50-e5-49-be-c0-dc        12楼机房A07
  • 12F-JF01-A008        192.168.12.108        00-e0-66-0d-71-d9        12楼机房A08
  • 12F-JF01-A009        192.168.12.109        00-e0-66-02-dd-d8        12楼机房A09

最近访问 头像模式 列表模式
yy15675555 发表于 2022-4-17 09:19:30 | 显示全部楼层

活跃 29187| 技术 0| 互助 0| 钻石 0

可以实现吗。?是同一网段下可以还是可以跨网段?留言跟进下
y283146775 发表于 2022-4-17 12:34:28 | 显示全部楼层

活跃 15768| 技术 22| 互助 28| 钻石 300

把netsh interface ip替换成netsh interface ipv4

点评

没反应  详情 回复 发表于 2022-4-17 18:11
 楼主| zxcvghjmk 发表于 2022-4-17 18:11:11 | 显示全部楼层

活跃 788| 技术 0| 互助 0| 钻石 0

y283146775 发表于 2022-4-17 12:34
把netsh interface ip替换成netsh interface ipv4

没反应  
lianhe 发表于 2022-5-10 12:32:11 | 显示全部楼层

活跃 82| 技术 0| 互助 0| 钻石 0

本帖最后由 lianhe 于 2022-5-10 12:47 编辑

没有同传还原系统的情况下,我都是先用wds批量部署万能驱动的镜像,这个镜像会提前封装好机房管理软件,会自动安装部分不适合封装的软件和能批量控制的还原系统,第一次部署时要在无人值守文件设置自动分区,安装完成后解除还原,手动在d盘保存一个ip.txt文件,文件要设置ip,然后用机房管理软件批量运行批处理还原ip,根据ip生成计算机名。最后在用还原软件的控制台重新保护。以后wds安装系统可以在无人值守配置文件里设置只安装c盘,万能驱动镜像还可以把自动还原D盘的ip.txt文件里的ip封装进去。不好的地方就是wds批量部署时每台电脑得手动按开机启动项进pxe,pxe如果设置优先启动,在不需要同传的时候开机时间过长,而且uefi模式安装完成后,还会把优先启动设置成windows系统。有人有更好的办法吗?

点评

好复杂  详情 回复 发表于 2022-5-10 14:30
 楼主| zxcvghjmk 发表于 2022-5-10 14:30:48 | 显示全部楼层

活跃 788| 技术 0| 互助 0| 钻石 0

lianhe 发表于 2022-5-10 12:32
没有同传还原系统的情况下,我都是先用wds批量部署万能驱动的镜像,这个镜像会提前封装好机房管理软件,会 ...

好复杂  
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

zxcvghjmk

788

活跃

0

技术

0

互助
签到任务
最火的业界新闻
  • 小米总裁透露小米汽车进展:计划不变 正研
  • 小米一季度净利润腰斩 中国智能手机月销量
  • 未来苹果键盘可能有一个可拆卸按键作为鼠标
  • 今年手机市场有点难?日媒称安卓系砍单两成
  • 惠普推出2022款Spectre/Envy系列笔记本电脑
  • 国内智能手机销量连续10周下滑 连iPhone也
  • 小米2022年第一季度营收734亿元 净利润29亿
  • GTX 1630千元亮机卡全曝光:RX 6400轻松碾
  • 显卡行情调查:RX 6000比MSRP溢价5% RTX 30
  • 消息称NVIDIA GeForce GTX 1630显卡将于5月
炫酷的硬件Show
  • MARK 1 - 设计型 PC 与垂直风道
  • 好的大王,没问题大王
  • 振华SUPER FLOWER 铜皇450W 铜牌电源
  • 比小更小,Mini-STX装机
  • 华擎X99E-ITX + 银欣ML06 装机记
  • 最强双路泰坦硬管水冷 制作流程
  • 银欣FT02,双路E5工作站
  • 迟到的定制机箱小钢炮清理灰尘
  • 乔思伯UMX1 Plus,小巧的家用综合主机
  • 分体水冷第二弹-Inwin 805 infinity
有趣的美图分享
  • 老兄 这水怎么越来越热呀
  • 没电都急哭了
  • 没毛病,但又觉得哪不对
  • 其实我也是可乐教的
  • 诡计多端的销售
  • 反客为主
  • 反重力楼梯
  • 这buff叠满了,可惜有个de的前缀
  • 8bit猫
  • 这猕猴桃真青椒
关注官方微信
快速回复 返回顶部 返回列表