簡體   English   中英

從.NET執行批處理腳本(意外輸出)

[英]Execute batch script from .NET (unexpected output)

我正在嘗試從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"

我希望批處理腳本不產生任何輸出(由於timeout命令的nul重定向),但它仍然可以。 輸出包含程序路徑和命令文本。 這是為什么? (是否輸出腳本跟蹤,例如bash -x ?Google不會告訴我如何/是否可以將其禁用)

將輸出重定向到nul應該只隱藏了重定向命令的輸出。

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

這將:

來自Technet的“ Echo”

防止批處理文件中的所有命令(包括echo off命令)在屏幕上顯示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM