如果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文件是否正在运行。
答案 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"); };