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.