2015-12-03 45 views
-2

我將不得不在這裏更改50臺計算機的名稱,並希望使批處理文件更容易。計算機名稱格式如下: CMS-(RM#) - (TAG#)如CMS-311-003784批處理文件獲取計算機名稱並在其中插入字符

我需要在房間號碼(CMS-T311-003784)之前插入一個T.到目前爲止,我已經更改了名稱,但必須在NEWPCNAME的名稱中輸入名稱。

我想知道是否有辦法告訴它複製當前名稱,但在當前名稱的第四個字符後插入T.

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName /v ComputerName /t REG_SZ /d NEWPCNAME /f 

回答

2

你可以得到計算機名稱就是這樣,會揣摩插在正確的位置的字符的方式,編輯這個當我弄明白。

@echo off 
FOR /F "usebackq" %%i IN (`hostname`) DO SET host=%%i 
echo oldname: %host% 
if "%host:~4,1%"=="T" goto end 
set host=%host:~0,4%T%host:~4% 
echo newname: %host% 
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName /v ComputerName /t REG_SZ /d %host% /f 
:end 
pause 

編輯

這比我thougt更容易,這需要子從名稱和位置增加了一件T 4

+0

這一個似乎在命令行工作,但不會改變計算機的名稱。它迴應新的主機名稱,但不會在註冊表或計算機屬性中更改它。我什至重新開始,什麼都沒有? –

+0

編輯 - 這個改變房間號碼爲111就像下面的帖子那樣。 CMS-T111-003784? –

+0

是,這段代碼保存計算機的名稱作爲變量,所以你可以使用它在自己的命令中使用%主機%作爲新名稱更改計算機名 –

1
@echo off 
if "%computername:~4,1%" neq "T" (
echo REG DELETE HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName /v ComputerName 
echo REG ADD HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName /v ComputerName /t REG_SZ /d %computername:~0,4%T%computername:~4% /f 
set "computername=%computername:~0,4%T%computername:~4%" 

) 
echo Name changed to %computername% 
pause 
exit 

注意,需要"REG"命令echo編輯 - 刪除要激活的關鍵字echo

請注意,原始條目很可能需要刪除。

(未經測試) - 在激活之前進行驗證。

+0

我試着這個,它取名爲1T-111-003784。我改變了命令中所有三個位置的1%,並且它的名字是111-T111-003784。所以它把T放在正確的位置,但爲什麼它會改變T之前和之後的字符?即使我將名稱更改爲CMS-333-003784,也會使其成爲111-T111-003784 –

+0

因爲我塞滿了子串。它應該是0,4(從第一個字符開始,對於4個字符 - 從「字符0」開始計數)第一個「4,1」是正確的(字符串中的**第五個**字符是**不是**一個「T」 - 這是爲了防止「操作已經發生」。也許'如果「%computername:〜14,1%」equ「」(會更好(名字現在有14個字符長)'computername ''在'cmd'開始時被填充,所以如果你改變計算機名稱,就像你測試的那樣,你需要重新啓動'cmd'。實際上,我會修復它以適應... – Magoo

相關問題