2009-05-12 8 views
6

Próbuję napisać skrypt wsadowy, który błędów, jeśli port 1099 jest już w użyciu.Windows skrypt wsadowy, aby wydrukować komunikat o błędzie, jeśli port w użyciu

Niestety, muszę napisać to w skrypcie wsadowym DOS (nie mogę niczego zainstalować).

wiem, że mogę wydrukować PID procesu wyginanie portu 1099 ręcznie:

netstat -aon | findstr ":1099" 

Ale chcę, aby być w stanie uruchomić tego polecenia w skrypcie i wyjść skryptu z komunikatem o błędzie, jeśli to polecenie ma dowolne wyjście.

Przypuszczam w pchania mogę przekierować wyjście do pliku tymczasowego i sprawdzić rozmiar to jednak, że wydaje się naprawdę hacky ...

Odpowiedz

11
netstat -an | FINDSTR ":1099" | FINDSTR LISTENING && ECHO Port is in use && EXIT 1 

Można użyć && w skrypcie, aby uruchomić polecenie tylko wtedy, gdy poprzednie polecenie się powiodło (na podstawie jego kodu wyjścia/ERRORLEVEL). Pozwala to wyświetlić komunikat i wyjść tylko wtedy, gdy szukany ciąg znajduje się w danych wyjściowych polecenia netstat.

Ponadto należy jawnie szukać portów LISTENING.

FINDSTR obsługuje wyrażeń regularnych, dzięki czemu można również wykonać następujące czynności w celu skrócenia linii poleceń:

netstat -an | findstr /RC:":1099 .*LISTENING" && ECHO Port is in use && EXIT 1 
+0

Wow, dzięki. Właśnie to przetestowałem i działa idealnie. I zauważyłeś również, że przełącznik "o" był zbędny, bonus;) –

Powiązane problemy