我有一个要执行的 .bat 文件。
在那个.bat
文件里面,最后是那个代码
START _file_creator.bat %some_arg_name%
ENDLOCAL
EXIT
我不想在执行期间显示窗口,而且我必须等到该.bat
文件执行的操作完成然后终止执行(在操作结束时,我看到标准文本“按任意键继续” )。我还需要检查该文件的输出和错误,所以我正在尝试使用该代码:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = @"C:\m_f\_config.bat";
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
proc.WaitForExit();
output1 = proc.StandardError.ReadToEnd();
proc.WaitForExit();
output2 = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
但我得到的只是错误
Windows can not find file "_file_creator.bat".
Make sure you typed the name correctly and try again.
当然,如果我使用它运行该.bat
文件,proc.StartInfo.UseShellExecute = true
它工作正常,但在这种情况下,我无法设置RedirectStandardError = true
和RedirectStandardOutput = true
如何解决?
编辑
使用该代码现在可以使用
proc.StartInfo.FileName = @"C:\m_f\_config.bat";
proc.StartInfo.WorkingDirectory = @"C:\m_f\";