0

我有这个用于命名机器的脚本。这是在我成功重新映像机器后自动重命名。一次做 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 个字符作为计算机名称,因此该脚本应考虑到这一点。理论上。

4

2 回答 2

1

只是 :

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

这应该够了吧 !

于 2017-06-22T18:41:35.460 回答
1
SET pcname=%campus%-%serialnumber2%
set pcname=%pcname:~0,15%
REM ENDLOCAL

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

endlocal结束由前面建立的本地环境setlocal并丢弃从那时起对环境所做的任何更改(例如 - 更改变量的内容,例如......)

于 2017-06-22T18:45:03.747 回答