在C#中检查MyBat.bat文件是否正在运行

时间:2015-03-23 14:09:42

标签: c# batch-file cmd

如果MyBat.bat文件在系统中运行,我如何检查C#代码。

我试过这个但是没有正常工作。请以其他方式提出建议。

Process proc = new Process();
proc.StartInfo.FileName = @"D:\MyBat.bat";
if (proc.Start())
{
     Console.Write("This is bat files Open!.");
}
else
{
    Console.Write("Welcome");
}

我只想检查MyBat.bat文件是否在系统中运行。因为.bat文件在命令提示符下运行,所以如何验证MyBat.bat文件是否正在运行。

2 个答案:

答案 0 :(得分:3)

您应该通过cmd.exe /c调用批处理文件,而不是直接调用。

这样:

var command = "foo.bat";
Process p = new Process(){
    StartInfo = new ProcessStartInfo("cmd.exe", "/c " + command)
};
var started = p.Start();

if(started)
{
    Console.WriteLine("started");
    var sync = true; //or false, see below
    if(sync)
    {
        //either wait synchronously
        p.WaitForExit();
        Console.WriteLine("finished");
    }
    else
    {
        //or wait for an exit event asynchronously
        p.Exited += (a, b) => { Console.WriteLine("finished"); }
    }


}
else
{
    Console.WriteLine("not started");
}

答案 1 :(得分:0)

如果您现在想知道,可以查看HasExited属性。

  

var isRunning =!myProcess.HasExited;

如果这是一个快速的过程,只需等待它。

  

myProcess.WaitForExit();

如果您在后台启动了一个,请在将EnableRaisingEvents设置为true后订阅已退出事件。

  

myProcess.EnableRaisingEvents = true;

     

myProcess.Exited + =(sender,e)=> {MessageBox.Show(" Process exited"); };