SYSTEMINFO, filtrowanie wyników w CMD oraz funkcja „IF”
Dzisiaj chciałbym podpowiedzieć Wam jak można odfiltrować sobie długie wyniki w wierszu poleceń czyniąc „duże” polecenia systemowe bardziej poręcznymi, a także wykorzystać tę sztuczkę w skryptach .cmd, z funkcją IF. Prostymi słowy: „jeśli fraza występuje to zrób to, a jeśli nie występuje, to zrób coś innego”.
Zerknijmy na wbudowane w system Windows polecenie „systeminfo”. Ilość danych, jaki zwróci nam to polecenie jest całkiem spora. Mamy tu informacje o sprzęcie, systemie, lokalizacji i poprawkach.
W wielu sytuacjach będziemy potrzebowali jednej konkretnej informacji, zamiast całej listy. Ot, choćby w artykule o UPTIME za pomocą | find „szukana fraza” sczytywaliśmy czas pracy systemu (Posługujemy się przykładami z anglojęzycznego Windowsa. W polskiej wersji wyszukiwane frazy będą troszkę inne):
systeminfo | find „System Up Time”
W identyczny sposób możemy odszukać nazwę komputera:
systeminfo | find „Host Name”
…czy też konkretną zainstalowaną poprawkę bezpieczeństwa:
systeminfo | find „KB2603229”
Działa to identycznie z każdą komendą systemową. Na przykład, wyświetlmy wers mówiący o tym, czy mamy włączone DHCP w poleceniu „ipconfig”:
ipconfig /all | find „Dhcp”
Wyszukiwana fraza może być dowolna, może zawierać spacje i możemy wpisywać tylko fragmenty słów. Wielkość liter ma znaczenie.
Skoro umiemy przycinać wyniki poleceń, zobaczmy jak można w pliku wsadowym utworzyć prosty warunek sprawdzający. Wykorzystajmy „systeminfo„, znajdźmy na liście poprawkę o numerze „KB2603229” i jeśli się znajdzie, wykonajmy jakąś procedurę:
systeminfo | find „KB2603229”
IF %errorlevel% EQU 0 goto znaleziono
echo Nie znaleziono…
Goto koniec
:znaleziono
echo W tym miejscu wykona się jakis kod…
:koniec
timeout 5
echo koniec programu
exit
Sprawdzanie opiera się na zmiennej systemowej %errorlevel%. W dużym uproszczeniu, zmienna %errorlevel% ma domyślnie wartość zero. Gdy pojawi się błąd, zmienna przyjmie jakąś wartość. W naszym scenariuszu znalezienie poprawki „KB2603229” pozostawi %errorlevel% z wartością 0. Skrypt przejdzie do wersu zaczynającego się od „:znaleziono”, gdzie możemy umieścić swój dowolny kod.
Mam nadzieję, że w tej poradzie dostrzegacie spory potencjał i nieraz z niej skorzystacie w swojej pracy w IT. Ja mam już pomysł na praktyczne zastosowanie i niebawem opisze to na łamach Bloga SPECE.IT. Zachęcam do zaglądania tu jak najczęściej 🙂
Najnowsze komentarze