创建脚本以使用命名方案重命名计算机
我有用于命名机器的此脚本。这是我成功重新镜像一台机器后的自动重命名。每次做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个字符?由于微软只允许15个字符作为计算机名,所以这个脚本应该考虑它。理论上。
刚:
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
建立了当地的环境和丢弃从那时起环境所做的任何更改(如 - ...变化的变量的内容,例如)
我有一个问题,我应该完全删除设置的本地? –
绝对不是! (虽然在@echo off之后放*是常规操作)。调用delayedexpansion的唯一方法是使用setlocal来调用delayedexpansion(因为您正在修改代码块中的count并使用修改后的值)。此外,使用'setlocal'确保环境保持清洁,并且不会因运行批次而对环境所做的更改造成混乱。如果省略,则所做的更改将持续存在,因此您可以“继承”由完全不相关批次设置的变量。 – Magoo
真棒,谢谢。这工作完美! –
该命令的工作原理非常完美,但如果名称少于15个字符,则会在末尾添加空格。有没有办法不添加空间? –
只需加上:'SET pcname =%pcname:=%'。编辑代码! – SachaDee