TaskKill для уничтожения консольного приложения .NET - PullRequest
0 голосов
/ 11 июля 2010

У меня есть куча консольных хост-приложений, на которых размещаются службы WCF. Я вызываю файл .bat в качестве шага предварительной сборки, чтобы уничтожить все запущенные экземпляры хоста, чтобы я не получал ошибок регистрации каналов WCF (ручное уничтожение хостов консоли каждый раз, когда сборка вызывает огромную боль).

Файл .bat, который я создал, содержит следующее.

taskkill /T /F /FI "imagename eq Host.vshost.exe"
taskkill /T /F /FI "imagename eq Host.exe"
exit /B 0

Это убивает оба процесса. В TaskManager я вижу, что Host.exe пропал, а Host.vshost.exe имеет новый PID, но окно консоли все еще работает. Кажется, что cmd.exe - это фактический процесс, на котором размещается консоль, поэтому я изменил файл .bat на этот ..

taskkill /T /F /FI "imagename eq cmd.exe"

Но это убивает все окна cmd.exe.

Как я могу настроить это так, чтобы я мог настроить таргетинг только на окно cmd конкретного Консольного приложения или есть другая команда, которую я должен использовать?

1 Ответ

0 голосов
/ 12 июля 2010

taskkill имеет несколько опций, которые помогут вам сузить процесс, который вы хотите убить. Например, является ли заголовок окна процесса CMD.EXE, который вы хотите уничтожить, уникальным (например, «Пакетная обработка» вместо по умолчанию «C: \ WINDOWS \ System32 \ cmd.exe»)? Тогда используйте

taskkill /F /T /FI "WINDOWTITLE eq Batch Processing"

Если вам нужно изменить заголовок целевого окна, вы можете сделать это из целевого пакетного файла с помощью команды TITLE Your Title Here или запустить этот процесс с помощью команды start "Your Title Here" ....

...