[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 批处理如何将计算机名改为MAC地址-兼容win7和win10

各位大神!
如何将计算机名改为MAC地址,需要兼容win7和win10,站里找的感觉不接近,要不就是看不懂。
还请大家帮帮忙,不胜感激!

本帖最后由 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
复制代码

TOP

回复 8# yakeyun


    测试OK!万分感谢

TOP

回复 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
复制代码

TOP

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

TOP

本帖最后由 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

TOP

回复 4# 窄口牛


    抱歉,不需要搞那么复杂

TOP

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

多网卡咋办?感觉还是按部门改计算机名字好些,IP按部门分配,各部门备份一个到两个IP地址。

TOP

回复 2# yakeyun


   多谢,我测试下

TOP

本帖最后由 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
复制代码

TOP

返回列表