2013-10-03 34 views
2

背景:通過預先設置當前pc名稱批量重命名

我正在將幾千臺計算機從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」

+0

將您的'@echo off'更改爲'@echo on'並查看它正在運行的內容。可能'PCNAME'被設置爲一個空字符串,並以「/ d/f」結尾。我有一種感覺'set/p'不能像你認爲的那樣工作。擺脫'/ p',它應該工作。 – indiv

+0

你是對的。謝謝一堆。 – ibbofez

回答

1

set /p PCNAME=...中刪除/p。這樣做只是提示用戶輸入,而只是在屏幕上打印「刪除%computername%」。你想要的是簡單

set "PCNAME=delete%computername%" 

因爲它是現在,可能PCNAME最終成爲一個空字符串和/d %PCNAME% /f被評價爲「/ d/F」。

如果將@echo off更改爲@echo on,那麼腳本將在打印每行時運行,並且您可以準確查看正在評估的內容。