【问题标题】:Executing batch file with ProcessStartInfo使用 ProcessStartInfo 执行批处理文件
【发布时间】:2012-07-12 14:57:22
【问题描述】:

我正在使用 ProcessStartInfo 类来执行批处理文件。 但我不太清楚如何正确使用它。 当我执行批处理文件时,我们可以跟踪是否有任何错误。 在我的场景中,批处理将启动另一个进程并成功启动它将继续执行。如果执行批处理文件有任何错误,它将退出。这是我正在使用的代码。

我还必须跟踪成功启动和失败。

internal bool ExecuteBatchFile(string fileName, int executionTime)
    {
        var exitCode = -1;
        var error = string.Empty;
        try
        {

            var hubStartInfo = new ProcessStartInfo
            {
                CreateNoWindow = false,
                FileName = fileName,
                UseShellExecute = false
            };

            var process = new Process { StartInfo = hubStartInfo };
            process.Start();
            process.WaitForExit(executionTime);

            if (process.HasExited)
            {
                exitCode = process.ExitCode;
                if (exitCode == 0)
                {
                    return true;
                }
                error = process.StandardError.ReadToEnd();
            }
            else
            {
                return true;
            }

            return false;
        }
        catch (Exception e)
        {
            return false;
        }
    }

谢谢

【问题讨论】:

    标签: c# c#-4.0 c#-3.0


    【解决方案1】:

    有关启动进程的信息,请参阅 here。示例 2 有关于监控外部进程的信息

    private void simpleRun_Click(object sender, System.EventArgs e)
    {
      System.Diagnostics.Process.Start(@"C:\listfiles.bat");
    }
    

    【讨论】:

    • 感谢您的链接。但我怀疑它是否会起作用。我认为如果进程没有退出,'listFiles.StandardOutput' 会抛出异常。
    猜你喜欢
    • 2011-01-23
    • 2014-11-09
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多