Пакетный скрипт Windows для вывода сообщения об ошибке, если используется порт - PullRequest
6 голосов
/ 12 мая 2009

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

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

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

netstat -aon | findstr ":1099"

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

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

1 Ответ

11 голосов
/ 12 мая 2009
 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
...