Batch-WMIC, der die Ausgabe umleitet und in eine Variable umschließt

Ich versuche, mit WMIC einige alte Drucker auf unseren älteren Druckservern zu entfernen

Wenn ich die folgende Syntax von der Befehlszeile verwende, funktioniert es

WMIC PRINTER WHERE "SERVERNAME LIKE '%% OLDSERVERNAME %%'" DELETE

Ich wurde gefragt, ob ich die Drucker ersetzen oder aktualisieren kann, damit der Helpdesk keine Anrufe zum Hinzufügen von Druckern erhält

Ich habe einige Variationen mit SET versucht, um die Eigenschaften für SERVERNAME festzulegen. Es scheint sich zu verarbeiten, aber nichts ändert sich, und GET zeigt immer noch den alten Wert.

Daher dachte ich, ich könnte eine FOR / F-Schleife durchführen, den Namen des Druckers (Freigabename) in eine Variable einschließen und dann mit einem anderen Befehl die Drucker neu erstellen, nachdem die fehlerhaften Drucker gelöscht wurden.

Hier ist mein Drehbuch

@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%

Sie würden also denken, Sie würden den gesamten Wert in eine nette Variable einschließen, aber nein, ich habe das Echo aktiviert und es sieht so aus, als würde die Variable auf Null zurückgesetzt, sobald sie erfasst wird

meine Ausgabe sieht so aus ...

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.

Ich würde gerne ein paar Gedanken darüber haben, warum es so aussieht, als würde es die Saite wegwerfen.

Powershell und VBScript sind auch nicht ausgeschlossen, ich kenne beide, nur das schien möglich und ich möchte wirklich nicht von vorne anfangen.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage