我使用以下代码运行了一个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;
但不确定接下来要做什么......
答案 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();