Пакетный сценарий Windows для печати сообщения об ошибке, если порт используется
-
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