从.NET执行批处理脚本(意外输出)

时间:2015-09-29 05:47:30

标签: c# windows batch-file

我正在尝试从C#程序执行一个简单的批处理脚本。

这是一个最小的例子:

批处理文件

TIMEOUT /T 30 >nul
EXIT /B 1

C#计划

    static void Main(string[] args)
    {
        Process process = new Process();
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.CreateNoWindow = false;
        process.StartInfo.FileName = "D:\\xxx.bat";
        process.Start();
        string output = process.StandardOutput.ReadToEnd();
        bool exit = process.WaitForExit(120000);
        Console.WriteLine(output);
    }

输出

"\r\nC:\\Users\\xxx\\bin\\Debug>TIMEOUT /T 30 \r\n\r\nWaiting for 30 seconds, press a key to continue ...\r\n\r\nC:\\Users\\xxx\\bin\\Debug>EXIT /B 1 \r\n"

我希望批处理脚本不产生输出(由于nul命令的timeout重定向),但它仍然存在。输出包含程序路径和命令文本。这是为什么? (它是否输出脚本跟踪,例如bash -x?Google没有告诉我如何禁用它?

1 个答案:

答案 0 :(得分:1)

将输出重定向到nul应该只隐藏重定向命令的输出。

相反,您可以在bat文件的开头添加@echo off

这将:

  

<子> From "Echo", Technet

     

阻止批处理文件中的所有命令(包括回显关闭   命令)从屏幕上显示。