Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 创建脚本以使用命名方案重命名计算机_Batch File_Rename_Command Prompt_Computer Name - Fatal编程技术网

Batch file 创建脚本以使用命名方案重命名计算机

Batch file 创建脚本以使用命名方案重命名计算机,batch-file,rename,command-prompt,computer-name,Batch File,Rename,Command Prompt,Computer Name,我有一个命名机器的脚本。这是为了在我成功地对一台机器重新成像后自动重命名。一次做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 ) SE

我有一个命名机器的脚本。这是为了在我成功地对一台机器重新成像后自动重命名。一次做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个字符?由于Microsoft只允许计算机名包含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=%pcname:~0,15%
SET pcname=%campus%-%serialnumber2%
set pcname=%pcname:~0,15%
REM ENDLOCAL

WMIC computersystem where caption=%computername% rename %pcname%
如果它更长,它将被剪掉,如果不是,它将保持原样

在代码中:

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
建立的本地环境,并放弃此后对环境所做的任何更改(例如-更改变量的内容…)


endlocal
将结束由前面的
setlocal
建立的本地环境,并放弃此后对环境所做的任何更改(例如-更改变量的内容…)

我有一个问题,我是否应该完全删除设置的本地环境?绝对不是!(尽管通常将其置于
@echo off
之后)。调用
delayedexpansion
的唯一方法是使用
setlocal
。此外,使用
setlocal
可确保环境保持干净,不会因运行批处理对环境所做的更改而变得杂乱无章。如果省略,所做的更改将保持不变,因此您可以“继承”由完全不相关的批处理设置的变量集。我有一个问题,我应该完全删除该集吗?绝对不!(尽管通常将其置于
@echo off
之后)。调用
delayedexpansion
的唯一方法是使用
setlocal
。此外,使用
setlocal
可确保环境保持干净,不会因运行批处理对环境所做的更改而变得杂乱无章。如果省略,所做的更改将保持不变,因此您可以“继承”由完全不相关的批处理设置的变量。该命令工作正常,但如果名称短于15个字符,则会在末尾添加空格。有没有办法不添加空间?只需添加以下内容:
SET pcname=%pcname:=%
。编辑代码!该命令工作正常,但如果名称少于15个字符,则会在末尾添加空格。有没有办法不添加空间?只需添加以下内容:
SET pcname=%pcname:=%
。编辑代码!