通过预先添加当前的pc名称来批量重命名pc

时间:2013-10-03 17:08:17

标签: batch-file windows-7 registry windows-xp

背景:

我作为分包商将数千台计算机从xp迁移到7台。计算机位于域中。我们拥有管理员权限,可以从域中添加,修改和删除计算机。当我们第一次接近xp机器时,我们必须在名称前面添加“delete”并重命名它(例如:旧名称“pc12345”新名称“deletepc12345”)。我正在处理一个有助于这个过程的批处理文件,但我遇到了一些麻烦。

脚本:

@echo off

SET /P PCNAME=delete%computername%
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName /v ComputerName /t REG_SZ /d %PCNAME% /f
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName\ /v ComputerName /t REG_SZ /d %PCNAME% /f
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\ /v Hostname /t REG_SZ /d %PCNAME% /f
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\ /v "NV Hostname" /t REG_SZ /d %PCNAME% /f
@echo off
echo Please Restart your computer Manually. The Program will exit now.
echo.
echo.
pause

问题: 运行批处理文件后。计算机名称更改为“/ f”而不是“deletepc12345”

1 个答案:

答案 0 :(得分:1)

/p移除set /p PCNAME=...。正在做的是提示用户输入并仅向屏幕打印“delete%computername%”。你想要的只是

set "PCNAME=delete%computername%"

就像现在一样,PCNAME最终可能是一个空字符串,/d %PCNAME% /f被评估为“/ d / f”。

如果您将@echo off更改为@echo on,您的脚本会在运行时打印每一行,您可以确切地看到正在评估的内容。