如何终止在后台运行的批处理文件

时间:2014-06-23 18:08:31

标签: windows c#-4.0 batch-file

我正在创建调用我的批处理文件的简单Windows服务,现在我想停止或终止批处理文件,将其停止到services.msc,我的服务停止但批处理文件在后台仍处于活动状态。我在后台终止批处理文件,我将停止我的服务。

提前谢谢。

 using System.ComponentModel;
 using System.Data;
 using System.Diagnostics;
 using System.Linq;
 using System.ServiceProcess;
 using System.Text; 
 using System.Threading.Tasks;

 namespace Myservices
 {
   public partial class Myservices: ServiceBase
   {
    private ProcessStartInfo processListener;
    Process p;
    public Myservices()
    {
        InitializeComponent();
    }

    protected override void OnStart(string[] args)
    {
         processListener = new ProcessStartInfo{

            CreateNoWindow = true,
            UseShellExecute = false,
            FileName = "cmd.exe",
            Arguments = string.Format("/C \"{0}\"", "C:\\myservices\\servceupdate.bat"),
            WindowStyle = ProcessWindowStyle.Hidden,
            RedirectStandardOutput = true,
            RedirectStandardError = true,
            ErrorDialog = false
        };

        p=Process.Start(processListener);
    }

    protected override void OnStop()
    {
        p.Close();//Here my batch file did not terminate.
    }
}

2 个答案:

答案 0 :(得分:2)

将标题放在批处理文件servceupdate.bat中,如下所示:

title servceupdate.bat

然后,在要用于终止进程的脚本中,可以运行此cmd:

for /f "tokens=2 delims= " %%a in ('tasklist /v ^| findstr "servceupdate.bat"') do taskkill /f /pid %%a

答案 1 :(得分:0)