Создать скрипт для переименования компьютера по схеме именования
У меня есть этот скрипт для именования машины. Это для автоматического переименования после того, как я успешно переизобразил машину. Чтобы сэкономить время при выполнении 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
и отменить все изменения, внесенные в среду с тех пор (например, изменить содержимое переменных, например...)