如何使批处理文件在电子表格中找到笔记本电脑的序列号,并从电子表格中的条目重命名主机名?

How can I make a batch file find the serial number of a laptop in a spreadsheet, and rename the hostname from an entry in the spreadsheet?

我与一家为公司重新调整笔记本电脑用途的公司合作,每个订单我们接到大约 20-100 台笔记本电脑的订单。我们在翻新笔记本电脑后在上面安装了全新的图像,但是我们在编写自动命名脚本时遇到了问题。我的任务是找到一个可以执行以下操作的脚本:

  1. 从笔记本电脑的 BIOS 中读取序列号
  2. 将此序列号与电子表格或 CSV 文件进行比较,然后找到 那里的序列号
  3. 然后,在旁边的列中找到所需的计算机名称 序列号
  4. 最后,使用在文件中找到的新名称重命名计算机

写一个包含名称和序列号的大电子表格文件比在 CMD 提示符下键入每个新名称并分别重新启动每台计算机要容易得多。

到目前为止,如果需要,我有以下脚本可以使用序列号作为变量:

for /f "skip=1 delims=" %%J in ('wmic bios get serialnumber') do (set serial=%%J Goto :done) :done

在我们有了这个脚本之后,键入 %serial% 输入特定于该计算机的序列号。

我也知道以下脚本将重命名计算机,使用变量作为新名称:

wmic computersystem where caption='%computername%' rename %variable%

其中 %variable% 是我们希望在电子表格中找到的变量。我只是不知道如何找到可以在电子表格中找到的新变量(新计算机名称)。任何帮助将不胜感激。

以下是我用于解决我遇到的问题的代码。

for /f "tokens=2 delims==" %%J in ('wmic bios get serialnumber /value') do set serial=%%J
Find /I "%serial%" {Location of file} > {Location of confirmation file}
For /f "tokens=1,2* delims=," %%G in ({Location of confirmation file}) do set HN=%%H
wmic computersystem where caption='%computername%' rename %HN%` 

看起来很复杂,但是通过文本行他们做了以下事情:

1) 从bios中查找序列号

2) 查找CSV文件中的行并将整行输出到文本文档中

3) 将文本文档中的所需名称设置为变量

4) 将计算机名称重命名为所需的变量名称