我有一个批处理文件,我需要从我的 C# 应用程序运行它。批处理文件位置与我的 C# 控制台应用程序 exe 位置不同。 我正在尝试下面的代码,我的 c# 控制台应用程序在调用 Process.WaitForExit() 后崩溃,它甚至不会捕获块。
注意:批处理文件成功运行并产生了预期结果,但我的 C# 应用程序崩溃了。
try
{
var processInfo = new ProcessStartInfo("cmd.exe", "/c " + batfile.bat);
processInfo.CreateNoWindow = true;
processInfo.WorkingDirectory = "location of batfile.bat";
processInfo.UseShellExecute = false;
var process = Process.Start(processInfo);
process.WaitForExit();
if (process.ExitCode == 1)
isSuccessful = true;
process.Close();
}
catch(Exception ex)
{
//log
}
我尝试了上述方法,但它一直崩溃。
可能你只需要在文件名后面加上双引号即可:
var processInfo = new ProcessStartInfo("cmd.exe", "/c batfile.bat");
或者如果真实文件名有空格:
var processInfo = new ProcessStartInfo("cmd.exe", "/c \"my real batfile.bat\"");