2009-05-12 6 views
6

J'essaye d'écrire un script batch qui contient des erreurs si le port 1099 est déjà utilisé.Script de lot Windows pour imprimer un message d'erreur si le port est utilisé

Malheureusement, je dois l'écrire dans un script batch DOS (je ne peux rien installer).

Je sais que je peux imprimer le PID du processus le port monopolisant 1099 manuellement:

netstat -aon | findstr ":1099" 

Mais je veux être en mesure d'exécuter cette commande dans un script batch et quitter le script avec un message d'erreur si cette commande a une sortie.

Je suppose à une poussée que je pourrais rediriger la sortie vers un fichier temporaire et tester la taille de celui-ci, mais qui semble vraiment aki ...

Répondre

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

Vous pouvez utiliser && dans un script batch pour exécuter un commande uniquement si la commande précédente a réussi (en fonction de son code de sortie/ERRORLEVEL). Cela vous permet d'afficher un message et de quitter uniquement si la chaîne que vous recherchez se trouve dans la sortie de netstat. En outre, vous souhaitez rechercher explicitement les ports LISTENING.

FINDSTR prend en charge les expressions régulières de sorte que vous pouvez également effectuer les opérations suivantes pour raccourcir la ligne de commande:

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

Wow, merci. Je viens de le tester et ça fonctionne parfaitement. Et vous avez également noté que le commutateur "o" était redondant, bonus;) –

Questions connexes