【问题标题】:Create a script to rename computer using naming scheme创建脚本以使用命名方案重命名计算机
【发布时间】:2017-11-26 04:25:37
【问题描述】:

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

【问题讨论】:

    标签: batch-file rename command-prompt computer-name


    【解决方案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
    

    这应该可以解决问题!

    【讨论】:

    • 该命令运行良好,但如果名称短于 15 个字符,则它会在末尾添加一个空格。有没有办法不加空格?
    • 只需添加:SET pcname=%pcname: =%。修改了代码!
    【解决方案2】:
    SET pcname=%campus%-%serialnumber2%
    set pcname=%pcname:~0,15%
    REM ENDLOCAL
    
    WMIC computersystem where caption=%computername% rename %pcname%
    

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

    【讨论】:

    • 我有一个问题,我应该完全删除 set local 吗?
    • 绝对不是! (尽管将它放在 @echo off 之后是惯例)。调用delayedexpansion 的唯一方法是使用setlocal。此外,使用setlocal 可确保环境保持清洁,并且不会因运行批处理对环境所做的更改而造成混乱。如果省略,所做的更改将持续存在,因此您可以“继承”由完全不相关的批次设置的变量。
    猜你喜欢
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 2021-02-13
    • 1970-01-01
    • 2014-03-07
    • 2019-12-13
    • 1970-01-01
    相关资源
    最近更新 更多