Board logo

标题: [系统相关] 批处理如何将计算机名改为MAC地址-兼容win7和win10 [打印本页]

作者: gxqzlsyls    时间: 2022-2-17 14:59     标题: 批处理如何将计算机名改为MAC地址-兼容win7和win10

各位大神!
如何将计算机名改为MAC地址,需要兼容win7和win10,站里找的感觉不接近,要不就是看不懂。
还请大家帮帮忙,不胜感激!
作者: yakeyun    时间: 2022-2-17 16:46

本帖最后由 yakeyun 于 2022-2-17 17:03 编辑

回复 1# gxqzlsyls
已知Win11会激活系统BUG,修改完系统无法重启,关机,或者启动程序。需要物理键重启,方可恢复正常。
Win10和7需要自测
  1. @echo off&setlocal enabledelayedexpansion
  2. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("""%~f0""","::",,"runas",1)(close)&exit /b
  3. for /f "tokens=1,*" %%l in ('getmac ^|find /i "-"') do set name=%%l
  4. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ActiveComputerName" /v ComputerName /t reg_sz /d %name% /f
  5. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t reg_sz /d %name% /f
  6. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v Hostname /t reg_sz /d %name% /f
  7. cls
  8. echo 一键修改完成!需要重启后方可生效,重启请回车继续。
  9. pause>nul
  10. shutdown -r -t 0
  11. exit
复制代码

作者: gxqzlsyls    时间: 2022-2-17 19:56

回复 2# yakeyun


   多谢,我测试下
作者: 窄口牛    时间: 2022-2-18 08:51

本帖最后由 窄口牛 于 2022-2-18 08:54 编辑

多网卡咋办?感觉还是按部门改计算机名字好些,IP按部门分配,各部门备份一个到两个IP地址。
作者: gxqzlsyls    时间: 2022-2-18 10:30

回复 4# 窄口牛


    抱歉,不需要搞那么复杂
作者: gxqzlsyls    时间: 2022-2-18 16:53

本帖最后由 gxqzlsyls 于 2022-2-18 18:47 编辑

回复 2# yakeyun


按照你的方法测试,win7蓝屏,win10假死需要强制关机,但能修改成功,不过这样不是想要的效果。
根据你的方法我稍微改了一下,用wimc自动的没有修改成功,但手动输入修改的话又没问题。很奇怪!麻烦帮看下,如下:
自动修改:
@echo on
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"
for /f "tokens=1,*" %%l in ('getmac ^|find /i "-"') do set pcname=%%l
wmic computersystem where "name='%computername%'" call rename %pcname%
pause>nul 2>nul

手动修改:
@echo on
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"
set /p pcname=请输入物理网卡地址:
wmic computersystem where "name='%computername%'" call rename %pcname%
pause>nul 2>nul
作者: idwma    时间: 2022-2-18 18:50

  1. powershell "start -verb runas powershell{(gwmi win32_computersystem).rename((gwmi Win32_NetworkAdapter|?{$_.NetEnabled}).MACAddress.replace(':','-'))}"
复制代码

作者: yakeyun    时间: 2022-2-18 23:43

回复 6# gxqzlsyls

试下看看,set数值调用,需要开延迟变量。
  1. @echo off&setlocal enabledelayedexpansion
  2. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
  3. cd /d "%~dp0"
  4. for /f "tokens=1,*" %%l in ('getmac ^|find /i "-"') do set pcname=%%l
  5. wmic computersystem where "name='%computername%'" call rename "%pcname%"  >nul 2>nul
  6. echo 一键修改完成!需要重启后方可生效,重启请回车继续。
  7. pause>nul
  8. shutdown -r -t 0
  9. exit
复制代码

作者: gxqzlsyls    时间: 2022-2-19 11:20

回复 8# yakeyun


    测试OK!万分感谢
作者: yakeyun    时间: 2022-2-19 16:47

本帖最后由 yakeyun 于 2022-2-19 16:53 编辑

回复 4# 窄口牛

如果主机存在多张网卡,多个MAC地址的,可以用下面代码先获取到当前联网的MAC信息,然后再修改为其MAC名称。
缺点是如果没有联网,就获取不到联网的网卡MAC值,无法修改。
  1. @echo off&setlocal enabledelayedexpansion
  2. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
  3. set ons=TRUE
  4. for /f "tokens=* " %%a in ('wmic nic get  macaddress ^,NetEnabled  ^|find /i "%ons%"') do set netdata=%%a
  5. for /f "tokens=1-6 delims=:" %%b in ('echo %netdata% ^|find /i ":"') do set macdata=%%b-%%c-%%d-%%e-%%f-%%g
  6. for /f "tokens=1 delims=^ " %%m in ('echo %macdata%') do set pcname=%%m
  7. echo 当前联网网卡MAC为:%pcname%
  8. wmic computersystem where "name='%computername%'" call rename "%pcname%"    >nul 2>nul
  9. echo,
  10. echo,
  11. echo 一键修改完成!需要重启后方可生效,重启请回车继续。
  12. echo,
  13. echo,
  14. pause>nul
  15. shutdown -r -t 0
  16. exit
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2