我正在尝试制作一个批处理文件,可以将戴尔电脑重命名为名称、连字符和服务标签。
我希望它看起来像这样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。
3.在 powershell 中您可以尝试下面的代码,但请记住您必须以管理员身份运行它。
$NewName='PC-'+(gwmi win32_bios).serialnumber
$PCName=(Get-CimInstance -ClassName Win32_ComputerSystem).Name
Rename-Computer -ComputerName $PCName -NewName $NewName -Restart