Batch file 通过在当前电脑名称前加前缀,批量重命名电脑

Batch file 通过在当前电脑名称前加前缀,批量重命名电脑,batch-file,windows-7,registry,windows-xp,Batch File,Windows 7,Registry,Windows Xp,背景: 作为分包商,我正在将数千台计算机从xp迁移到7。这些计算机位于一个域上。我们拥有从域中添加、修改和删除计算机的管理员权限。当我们第一次接近xp机器时,我们必须在名称前添加“delete”并重命名它(例如:旧名称“pc12345”新名称“deletepc12345”)。我正在处理一个批处理文件,这将有助于这个过程,但我遇到了一些麻烦 脚本: @echo off SET /P PCNAME=delete%computername% REG ADD HKLM\SYSTEM\CurrentCo

背景:

作为分包商,我正在将数千台计算机从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”

set/p PCNAME=…
中删除
/p
。这样做的目的是提示用户输入,而只是在屏幕上打印“删除%computername%”。你想要的只是

set "PCNAME=delete%computername%"
现在,PCNAME可能最终是一个空字符串,
/d%PCNAME%/f
的计算结果为“/d/f”


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

@echo-off
更改为
@echo-on
并查看它正在运行的内容。可能是
PCNAME
被设置为空字符串,结果是“/d/f”。我有一种感觉,
set/p
不像你想象的那样工作。摆脱
/p
,它应该会起作用。你是对的。非常感谢。