背景:
我作为分包商将数千台计算机从 xp 迁移到 7。这些计算机位于域中。我们拥有在域中添加、修改和删除计算机的管理员权限。当我们第一次接触xp机器时,我们必须在名称前面添加“delete”并重命名(例如:旧名称“pc12345”新名称“deletepc12345”)。我正在编写一个批处理文件来帮助完成此过程,但我遇到了一些麻烦。
Script:
@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”
去除/p
from set /p PCNAME=...
。它所做的就是提示用户输入并仅将“delete%computername%”打印到屏幕上。你想要的只是
set "PCNAME=delete%computername%"
就像现在一样,PCNAME 最终可能是一个空字符串,并且/d %PCNAME% /f
被评估为“/d /f”。
如果你改变@echo off
to @echo on
,您的脚本将在运行时打印每一行,您可以准确地看到正在评估的内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)