Wsadowe przekierowanie wyjścia WMIC i zawijanie do zmiennej

Próbuję użyć WMIC do usunięcia niektórych starych drukarek na starszych serwerach druku

jeśli użyję poniższej składni z wiersza poleceń, to działa

DRUKARKA WMIC, GDZIE „SERVERNAME LIKE '%% OLDSERVERNAME %%'” USUŃ

Poproszono mnie, bym sprawdził, czy mogę go zastąpić drukarkami lub zaktualizować, aby oszczędzić działowi pomocy technicznej uzyskiwania połączeń „jak mogę dodać drukarkę”

Próbowałem kilka odmian z SET, aby ustawić właściwości dla SERVERNAME, wygląda na to, że się przetwarza, ale nic się nie zmienia i GET nadal pokazuje starą wartość.

więc pomyślałem, że mogę zrobić pętlę FOR / F, zawinąć nazwę drukarki (nazwa udziału) w zmiennej, a następnie użyć innej komendy, aby odtworzyć drukarki, po usunięciu druzgocących drukarek.

oto mój skrypt

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

więc można by pomyśleć, że otrzymasz wartość zapakowaną w ładną zmienną, tak jak chcesz, ale nie, włączyłem echo i wydaje się, że zmienna zostaje przywrócona do wartości null, gdy tylko zostanie przechwycona

moje wyjście wygląda tak ...

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.

spodobałyby mi się myśli o tym, dlaczego wydaje się, że zrzucasz sznurek.

Powershell i VBScript również nie wchodzą w grę, jestem znany z obu, po prostu wydawało się to możliwe i naprawdę nie chcę zaczynać od nowa.

questionAnswers(5)

yourAnswerToTheQuestion