Я пытаюсь использовать WMIC для удаления некоторых старых принтеров на наших старых серверах печати.
если я использую приведенный ниже синтаксис из командной строки, он работает
ПРИНТЕР WMIC, ГДЕ "ИМЯ СЕРВЕРА, КАК '%% 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%
так что вы могли бы подумать, что получите значение, все завернутое в красивую переменную, которую можно использовать по своему усмотрению, но нет, я включил эхо, и кажется, что переменная возвращается к нулю, как только она захватывается
мой вывод выглядит так ...
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 тоже не исключены, я знаком с обоими, просто это казалось возможным, и я действительно не хочу начинать все сначала.
PRINTERNAME
установлено значение nameofprinter, затем установлено значение "Ничего", затем командаECHO
вызывается без данных, затем вы видите результат пустой командыECHO
, то есть ECHO включен., потому что он не повернулсяECHO OFF
, потому что он занимался отладкой. Единственный другой возможный результат -ECHO is off.
, но только если он ранее установил команду@echo off
. - person James K   schedule 31.10.2012