我写了一个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();
}
答案 0 :(得分:3)
如果我理解正确,我认为如果您不需要.bat
文件中的任何反馈,我们就有可能。
我已经在自己的机器上测试了这行代码并且工作正常。
static void Main(string[] args)
{
System.Diagnostics.Process.Start(@"d:\simple.bat");
}
为了测试目的,我只是将PING www.google.com
放在我的.bat
文件中。
答案 1 :(得分:0)
cmd批处理过程属于您的程序进程,主进程停止和子进程将被终止。
我认为您可以尝试在程序中创建Windows任务计划,在任务中运行批处理,程序停止和任务计划仍将运行。