2009-05-12 10 views
6

Estoy tratando de escribir un script por lotes que produce errores si el puerto 1099 ya está en uso.Script de proceso por lotes de Windows para imprimir mensaje de error si el puerto está en uso

Desafortunadamente tengo que escribirlo en una secuencia de comandos por lotes DOS (no puedo instalar nada).

sé que puedo imprimir el PID del proceso acaparando el puerto 1099 de forma manual:

netstat -aon | findstr ":1099" 

Pero yo quiero ser capaz de ejecutar ese comando en un archivo por lotes y salga del guión con un mensaje de error si ese comando tiene algún resultado.

supongo que en un empuje que podía redirigir la salida a un archivo temporal y probar el tamaño de la misma pero que parece muy hacky ...

Respuesta

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

Puede utilizar && en un archivo por lotes para ejecutar una comando solo si el comando anterior fue exitoso (basado en su código de salida/ERRORLEVEL). Esto le permite mostrar un mensaje y salir solo si la cadena que está buscando se encuentra en el resultado de netstat.

Además, querrá buscar explícitamente los puertos LISTENING.

FINDSTR soporta expresiones regulares por lo que también puede hacer lo siguiente para acortar la línea de comandos:

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

Wow, gracias. Lo probé y funciona perfectamente. Y también notó que el interruptor "o" era redundante, bonificación;) –

Cuestiones relacionadas