我们正在公司对计算机进行大规模重命名,虽然我知道有一种方法可以通过Powershell从DC进行大规模重命名,但有很多计算机已关闭,脚本需要再次运行或者需要单独修复落后者。
我们为这家公司提供了一个远程监控/管理系统,它可以在打开电源后立即将.bat文件部署到计算机上,所以我认为这种方式会更加彻底,并且也很少有机会搞砸了它是一台计算机重命名,而不是一个脚本重命名所有内容。
我遇到了这个,这似乎是一个非常好的主意,但由于某种原因,在我的分号分隔的文本文件中找不到“%name%”的字符串。
以下是我认为脚本应该做的事情:
脚本找到正在运行的计算机的名称,将其设置为%oldname%variable。然后它搜索分号分隔的文本文件。此文件包含当前名称和所需的计算机新名称。这两个名称由分号分隔。
因此脚本会尝试查找以前找到的名称,然后转到该行的第二部分以查找新名称(tokens2 delims =;)。
然后将它加载到newname变量中,这样wmic命令就可以使用oldname和newname运行。
但是,批处理文件找不到字符串。
for /f %%i in ('hostname') do; set oldname=%%i
for /f "tokens=2 delims=;" %%i in ('type \\server\shared\test\names.txt ^| findstr /i "%name%"') do; set newname=%%i
wmic computername where name="%oldname%" call rename name="%newname%"
我得到“Findstr:没有搜索字符串”这告诉我它无法正确找到文本文件中的一个名字,而且我有点迷失了。我不知道它是否与语法或如何设置txt文件有关。
文本文件是这样布局的(使用三条假行来演示格式化):
Test-L7;New-3284
Kitchen-7;New-1249
MikeS-7;New-3290