Пакетный сценарий Windows для печати сообщения об ошибке, если порт используется

StackOverflow https://stackoverflow.com/questions/851962

  •  21-08-2019
  •  | 
  •  

Вопрос

Я пытаюсь написать пакетный сценарий, который выдает ошибку, если порт 1099 уже используется.

К сожалению, мне приходится писать это в пакетном сценарии DOS (я ничего не могу установить).

Я знаю, что могу распечатать PID порта 1099 процесса вручную:

netstat -aon | findstr ":1099"

Но я хочу иметь возможность запускать эту команду в пакетном сценарии и выходить из сценария с сообщением об ошибке, если эта команда имеет какие-либо выходные данные.

Полагаю, я мог бы сразу перенаправить вывод во временный файл и проверить его размер, но это кажется очень хакерским...

Это было полезно?

Решение

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

Вы можете использовать && в пакетном сценарии для запуска команды только в том случае, если предыдущая команда была успешной (на основе ее кода завершения/ERRORLEVEL).Это позволяет вам отобразить сообщение и выйти, только если искомая строка найдена в выводе netstat.

Кроме того, вы хотите явно искать LISTENING порты.

FINDSTR поддерживает регулярные выражения, поэтому вы также можете сделать следующее, чтобы сократить командную строку:

netstat -an | findstr /RC:":1099 .*LISTENING" && ECHO Port is in use && EXIT 1
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top