如何在C#程序退出时保持批处理文件的运行?

时间:2015-05-22 20:48:39

标签: c# batch-file

我写了一个C#代码,它可以读取几个.xml文件(包含可执行文件,路径,参数.xml文件包含一系列需要运行的可执行文件),并创建了几个与之关联的批处理文件。 .xml文件。

创建每个批处理文件后,程序将执行C#代码中的每个批处理文件(当然使用cmd)。问题是一些批处理文件会运行几天而浪费内存/瞬间来保持C#程序运行。 是否可以保持.bat文件运行并关闭C#代码?假设我们不需要C#代码的任何错误报告。

以下是执行批处理文件的代码。

    //Execute BatchFile
    public static void ExecuteCommand(string command, string dummyPath)
    {
        int exitCode;
        ProcessStartInfo processInfo;
        Process process;

        processInfo = new ProcessStartInfo("cmd.exe", "/c " + command);
        processInfo.WorkingDirectory = dummyPath;
        processInfo.CreateNoWindow = true;
        processInfo.UseShellExecute = false;
        processInfo.RedirectStandardError = true;
        processInfo.RedirectStandardOutput = true;

        process = Process.Start(processInfo);
        process.WaitForExit();

        string output = process.StandardOutput.ReadToEnd();
        string error = process.StandardError.ReadToEnd();

        exitCode = process.ExitCode;

        Console.WriteLine("output>>" + (String.IsNullOrEmpty(output) ? "(none)" : output));
        Console.WriteLine("error>>" + (String.IsNullOrEmpty(error) ? "(none)" : error));
        Console.WriteLine("ExitCode: " + exitCode.ToString(), "ExecuteCommand");
        process.Close();
    } 

2 个答案:

答案 0 :(得分:3)

如果我理解正确,我认为如果您不需要.bat文件中的任何反馈,我们就有可能。 我已经在自己的机器上测试了这行代码并且工作正常。

    static void Main(string[] args)
    {
        System.Diagnostics.Process.Start(@"d:\simple.bat");
    }

为了测试目的,我只是将PING www.google.com放在我的.bat文件中。

答案 1 :(得分:0)

cmd批处理过程属于您的程序进程,主进程停止和子进程将被终止。

我认为您可以尝试在程序中创建Windows任务计划,在任务中运行批处理,程序停止和任务计划仍将运行。