C# 控制台应用程序在运行存在于不同目录中的批处理文件时崩溃

问题描述 投票:0回答:1

我有一个批处理文件,我需要从我的 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
            }

我尝试了上述方法,但它一直崩溃。

c# .net process console .net-framework-version
1个回答
0
投票

可能你只需要在文件名后面加上双引号即可:

var processInfo = new ProcessStartInfo("cmd.exe", "/c batfile.bat");

或者如果真实文件名有空格:

var processInfo = new ProcessStartInfo("cmd.exe", "/c \"my real batfile.bat\"");

© www.soinside.com 2019 - 2024. All rights reserved.