如何获取BAT文件的输出并将其保存为字符串

时间:2014-06-16 20:25:16

标签: c# batch-file cmd

我使用以下代码运行了一个BAT文件:

@ECHO ON
java com.mypackage.test send

结果如下:

C:\myfolder>java com.mypackage.test send
EXEC Sending...
Received 1 response(s)
Status Code: C00

如何获取Status Code值(C00)并将其保存到WinForm C#应用程序中的字符串中,以便将其用于其他操作?

我设置了..

proc.StartInfo.RedirectStandardError = false; proc.StartInfo.RedirectStandardOutput = true;

但不确定接下来要做什么......

4 个答案:

答案 0 :(得分:3)

这是阅读目录列表的示例。当然,根据您的要求进行更改相对容易。

void Main()
{
    StringBuilder sb = new StringBuilder();
    var pSpawn = new Process
    {
         StartInfo = 
         { 
            WorkingDirectory = @"D:\temp", 
            FileName = "cmd.exe", 
            Arguments ="/c dir /b", 
            CreateNoWindow = true,
            RedirectStandardOutput = true,
            RedirectStandardInput = true,
            UseShellExecute = false
         }
    };


    pSpawn.OutputDataReceived += (sender, args) => sb.AppendLine(args.Data);
    pSpawn.Start();
    pSpawn.BeginOutputReadLine();
    pSpawn.WaitForExit();
    Console.WriteLine(sb.ToString());
}

答案 1 :(得分:1)

proc.Start();    // Start the proccess
proc.WaitForExit();
var stream = proc.StandardOutput;

Process.StandardOutput返回一个StreamReader,然后您可以使用ReadLine method逐行读取。然后,您可以解析所需的输出

答案 2 :(得分:1)

如果您只想要输出并且不在乎用C#编写代码,只需修改批处理文件以将输出发送到output.log

@ECHO ON
java com.mypackage.test send > output.log

然后,您的应用程序可以打开并处理日志文件。

希望这有帮助。

答案 3 :(得分:1)

//create the process
Process p = new Process();

//redirect the output stream
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "myfile.bat";
p.Start();

//read the output stream
string statusCode = p.StandardOutput.ReadToEnd();
p.WaitForExit();