我正在尝试使用 WMIC 删除我们旧打印服务器上的一些旧打印机
如果我从命令行使用以下语法,它可以工作
WMIC 打印机,其中 "SERVERNAME LIKE '%%OLDSERVERNAME%%'" 删除
我被问到是否可以让它替换打印机或更新它们以使帮助台免于收到“如何添加我的打印机”电话
我尝试使用 SET 进行一些变体来设置 SERVERNAME 的属性,它似乎正在处理,但没有任何变化,并且执行 GET 仍然显示旧值。
所以我想我可以做一个 FOR / F 循环,将打印机的名称(共享名)包装在一个变量中,然后在删除有问题的打印机后使用另一个命令重新创建打印机。
这是我的脚本
@ECHO
ECHO Gathering Installed Printer Information...
FOR /F "tokens=1 skip=1" %%A IN ('WMIC PRINTER WHERE "Servername like "%%printaz1%%"" get sharename') DO SET PRINTERNAME=%%A
ECHO %PRINTERNAME%
所以你会认为你会得到一个很好的变量的值,但不,我打开了回显,看起来变量一旦被捕获就会被设置回null
我的输出看起来像这样......
FOR /F "tokens=1 skip=1" %%A IN ('WMIC PRINTER WHERE "Servername like "%%printaz1%%"" get sharename') DO SET PRINTERNAME=%%A
SET PRINTERNAME=nameofprinter
SET PRINTERNAME=
ECHO
ECHO is on.
会喜欢一些关于为什么它似乎在倾倒字符串的想法。
Powershell 和 VBScript 也不是不可能的选择,我对两者都很熟悉,这似乎是可能的,我真的不想重新开始。