我正在尝试为自己制作一个简单的winform gui
在 cmd 中手动运行 bbmod.exe 时,它将写入错误和一些文本,或者如果您提供正确的参数,则会写入一些成功文本。
但是当运行exe(通过双击它)时,它只会闪烁一毫秒。 当我尝试通过这个过程运行它时,也会发生同样的情况,并且输出流都是空的,标准流和错误流都是空的。
Process p = new Process();
// Redirect the output stream of the child process.
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.FileName = @"D:\tools\BBMOD\stann_gui\BBMOD_launch.bat";
p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
textBoxLog.Text = output;
我尝试了标准输出和标准错误 我还尝试使用 /k 参数创建一个运行相同 .exe 的 .bat 文件(使其不会立即关闭)
但是从输出返回的只是 bat 文件中的文本。
我也只是忽略了尝试写入我自己的文本框,而只是让 bat 文件使控制台窗口显示文本。但我更喜欢在程序中获得输出
我对示例 bat 文件进行了快速检查,这应该可以工作。 我正在使用 cmd 运行 .bat 文件
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo
{
FileName = "cmd.exe", // Use cmd.exe to run the batch file
Arguments = "/c test.bat", // Pass the batch file as an argument to cmd.exe
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
CreateNoWindow = true
};
process.StartInfo = startInfo;
process.Start();
string output = process.StandardOutput.ReadToEnd();
string error = process.StandardError.ReadToEnd();
process.WaitForExit();
Console.WriteLine("Standard Output:");
Console.WriteLine(output);
Console.WriteLine("Standard Error:");
Console.WriteLine(error);
测试.bat
@echo off
echo This is standard output
echo This is standard error >&2