使用带连字符的服务标签重命名 PC 的批处理文件

使用带连字符的服务标签重命名 PC 的批处理文件

我正在尝试制作一个批处理文件,可以将戴尔电脑重命名为名称、连字符和服务标签。

我希望它看起来像这样PC-ABC123。当前脚本的格式为PC123ABC 我正在使用的批处理似乎有效,但连字符没有显示,我尝试添加一个-between %PC%%comp_name%,所以它是%PC%-%comp_name%"%PC%%-%%comp_name%",但它似乎不起作用。

setlocal
@echo Setting Name to PC"Service Tag"
Set PC=PC
echo - > %temp%\sn.txt
wmic bios get serialnumber | find /I /V "SerialNumber" > "%temp%\sn.txt"
set /p comp_name=<"%temp%\sn.txt"
echo comp_name=%comp_name%
wmic computersystem where name="%computername%" rename name=%PC%%comp_name%
echo errorlevel=%errorlevel%
del "%temp%\sn.txt"
endlocal

最后

wmic bios get serialnumber | find /I /V "SerialNumber" > "%temp%\sn.txt"

显示正确提取的 SN 并echo comp_name=%comp_name%显示正确的服务标签

`wmic computersystem where name="%computername%" rename name=%PC%%comp_name%`

显示PCABC123“PC”然后显示服务标签。

C:\Windows\system32>wmic computersystem where name="%computername%" rename name=%PC%%comp_name% Executing (\PCABC123\ROOT\CIMV2:Win32_ComputerSystem.Name="PCABC123")->rename() Method execution successful.

 Out Parameters: instance of __PARAMETERS { ReturnValue = 0; };

答案1

我想这可能对你有用。

setlocal
@echo Setting Name to PC"Service Tag"
wmic bios get serialnumber | find /I /V "SerialNumber" > "%temp%\sn.txt"
set /p sn=<"%temp%\sn.txt"
set comp_name=PC-%sn%
echo comp_name=%comp_name%
wmic computersystem where name="%computername%" rename name=%comp_name%
echo errorlevel=%errorlevel%
del "%temp%\sn.txt"
endlocal

答案2

@echo off 

echo\Computer Name: %ComputerName% 
echo\Setting Name to PC-ServiceTag

for /f ^usebackq^ ^tokens^=^4^ ^delims^=^>^< %%i in (`
    (call^) ^|^| %__AppDir__%wbem\wmic.exe bios get serialnumber /format:xml ^| %__AppDir__%findstr.exe VALUE
   `)do 2>&1 %__AppDir__%wbem\wmic.exe computersystem where name="%ComputerName%" call rename "name=PC-%%~i" | %__AppDir__%findstr.exe =.*;

echo\errorlevel == %errorlevel%

1.无需创建文件、处理读取和删除,您可以直接在循环中获取和使用ServiceTag。

2. The WMIC tool is deprecated in Windows 10, version 21H1 and the 21H1 General Availability Channel release of Windows Server. This tool is superseded by Windows PowerShell for WMI. Note: This deprecation only applies to the command-line management tool. WMI itself isn't affected

3.在 powershell 中您可以尝试下面的代码,但请记住您必须以管理员身份运行它。

$NewName='PC-'+(gwmi win32_bios).serialnumber
$PCName=(Get-CimInstance -ClassName Win32_ComputerSystem).Name
Rename-Computer -ComputerName $PCName -NewName $NewName -Restart

相关内容