2009-05-12 4 views
6

Ich versuche, ein Batch-Skript zu schreiben, das Fehler, wenn Port 1099 bereits verwendet wird.Windows-Batch-Skript zum Drucken Fehlermeldung, wenn der Port in Verwendung

Leider muss ich es in einem DOS-Batch-Skript schreiben (ich kann nichts installieren).

Ich weiß, dass ich die PID des Prozesses manuell Port 1099 hogging drucken:

netstat -aon | findstr ":1099" 

Aber ich möchte in der Lage, dieses Kommando in einer Batch-Skript auszuführen und das Skript mit einer Fehlermeldung zu beenden, wenn Dieser Befehl hat eine Ausgabe.

ich an einem Stoß glaube, ich könnte die Ausgabe in eine temporäre Datei umleiten und die Größe der es testen, aber das scheint wirklich Hacky ...

Antwort

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

Sie && in einem Batch-Skript verwenden, kann ein laufen Befehl nur, wenn der vorherige Befehl erfolgreich war (basierend auf seinem Beendigungscode/ERRORLEVEL). Dies ermöglicht Ihnen, eine Nachricht anzuzeigen und nur zu beenden, wenn die Zeichenfolge, nach der Sie suchen, in der Ausgabe von netstat gefunden wird.

Sie möchten auch explizit nach LISTENING Ports suchen.

FINDSTR unterstützt reguläre Ausdrücke, so dass Sie auch die folgenden zu verkürzen, die Befehlszeile tun:

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

Wow, danke. Ich habe es gerade getestet und es funktioniert perfekt. Und du hast auch bemerkt, dass der "o" Schalter überflüssig war, Bonus;) –