Создать скрипт для переименования компьютера по схеме именования

У меня есть этот скрипт для именования машины. Это для автоматического переименования после того, как я успешно переизобразил машину. Чтобы сэкономить время при выполнении 40 или 50 за один раз.

SETLOCAL ENABLEDELAYEDEXPANSION
@ECHO OFF
SET count=1
SET campus=JOB

FOR /F "tokens=* USEBACKQ" %%F IN (`wmic bios get serialnumber`) DO ( 
SET serialnumber!count!=%%F
SET /a count=!count!+1
)

SET pcname=%campus%-%serialnumber2%

ENDLOCAL

WMIC computersystem where caption=%computername% rename %pcname%

pause

У меня есть несколько разных кампусов с 3-х или 4-х символьной схемой имени и серийным номером устройства. Мне было интересно, есть ли способ узнать, если%pcname% меньше или равно 15 символам, если нет, то обрезать ли последние цифры до 15 символов? Поскольку Microsoft допускает использование только 15 символов для имени компьютера, этот сценарий должен учитывать его. Теоретически.

2 ответа

Решение

Просто:

set pcname=%pcname:~0,15%

Если его дольше, он будет отрезан, если не останется, как есть

В вашем коде:

SETLOCAL ENABLEDELAYEDEXPANSION
@ECHO OFF
SET count=1
SET campus=JOB

FOR /F "tokens=* USEBACKQ" %%F IN (`wmic bios get serialnumber`) DO ( 
SET serialnumber!count!=%%F
SET /a count=!count!+1
)

SET pcname=%campus%-%serialnumber2%

::
SET pcname=%pcname:~0,15%
SET pcname=%pcname: =%
::


WMIC computersystem where caption=%computername% rename %pcname%

pause

Это должно делать свое дело!

SET pcname=%campus%-%serialnumber2%
set pcname=%pcname:~0,15%
REM ENDLOCAL

WMIC computersystem where caption=%computername% rename %pcname%

endlocal положит конец местной среде, установленной предыдущим setlocal и отменить все изменения, внесенные в среду с тех пор (например, изменить содержимое переменных, например...)

Другие вопросы по тегам