TaskKill用于杀死.NET控制台应用程序

时间:2010-07-11 18:32:40

标签: .net wcf batch-file console-application

我有一堆托管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 :(得分:0)

taskkill 有几个选项可帮助您缩小要杀死的进程。例如,要杀死的CMD.EXE进程的窗口标题是唯一的(例如“批处理”而不是默认的“C:\ WINDOWS \ System32 \ cmd.exe”)?然后使用

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

如果需要更改目标窗口的标题,可以使用命令TITLE Your Title Here从目标批处理文件执行此操作,或者使用start "Your Title Here" ...命令启动该过程。