2009-05-12 15 views
6

Sto provando a scrivere uno script batch che presenta errori se la porta 1099 è già in uso.Script batch di Windows per stampare un messaggio di errore se la porta è in uso

Purtroppo devo scrivere in uno script batch DOS (non riesco a installare nulla).

so che posso stampare il PID del processo monopolizzavano porta 1099 manualmente:

netstat -aon | findstr ":1099" 

ma voglio essere in grado di eseguire quel comando in uno script batch e uscire dallo script con un messaggio di errore se quel comando ha un output.

Suppongo che a una spinta ho potuto reindirizzare l'output in un file temporaneo e verificare le dimensioni di esso, ma che sembra davvero hacky ...

risposta

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

È possibile utilizzare && in uno script batch per eseguire un comando solo se il comando precedente ha avuto successo (in base al suo codice di uscita/ERRORLEVEL). Ciò consente di visualizzare un messaggio e di uscire solo se la stringa che si sta cercando si trova nell'output di netstat.

Inoltre, si desidera cercare esplicitamente le porte LISTENING.

FINDSTR supporta le espressioni regolari in modo da poter anche effettuare le seguenti operazioni per abbreviare la riga di comando:

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

Wow, grazie. L'ho appena testato e funziona perfettamente. E hai anche notato che l'interruttore "o" era ridondante, bonus;) –

Problemi correlati