我正在尝试通过除控制台窗口之外的cmd窗口上的c#代码执行命令(在Ctrl + F5上打开)。在执行命令时,它会要求输入用户名和密码。现在,我应该如何逐个传递用户名和密码 在完成处理后,它会生成2行输出,这些输出将在c#代码中读取,以便稍后使用。到目前为止编写的更新代码如下:
using System;
using System.IO;
using System.Diagnostics;
namespace ios
{
class Program
{
static void Main(string[] args)
{
ProcessStartInfo procStartInfo = new ProcessStartInfo();
procStartInfo.FileName = "cmd.exe";
procStartInfo.Arguments = "/C java -jar Reporter.jar p=Reporter.properties m=Normal Sales.viewToken";
procStartInfo.UseShellExecute = false;
procStartInfo.RedirectStandardOutput = true;
procStartInfo.RedirectStandardError = true;
procStartInfo.RedirectStandardInput = true;
using (Process process = new Process())
{
process.StartInfo = procStartInfo;
process.ErrorDataReceived += new DataReceivedEventHandler(OutputHandler);
process.Start();
StreamWriter streamWriter = process.StandardInput;
streamWriter.WriteLine("myusername");
streamWriter.WriteLine("password");
streamWriter.Close();
process.BeginErrorReadLine();
process.WaitForExit();
}
}
static void OutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
Console.WriteLine("Output shown : " + outLine.Data);
if (outLine.Data != null && outLine.Data.Contains("AccessToken"))
{
Console.WriteLine("Line Echoed : " + outLine.Data);
}
if (outLine.Data != null && outLine.Data.Contains("Expiration Date"))
{
Console.WriteLine("Line Echoed : " + outLine.Data);
}
}
}
}
现在,它与其他命令完美配合。但是我显示的命令(java -jar Reporter.jar p = Reporter.properties m = Normal Sales.viewToken)没有按预期输入。它在执行此程序时不显示任何输出。我如何能够传递输入并存储输出?
答案 0 :(得分:1)
将字符串输出到您的命令:
cmd.StandartInput.WriteLine("Please Input UserName:");
获取用户在Command中输入的字符串:
string s_UserName = cmd.StandardOutput.ReadToEnd();
密码也一样。
答案 1 :(得分:0)
获取您的流程基础流:
StreamWriter sw = cmd.StandardInput
StreamReader sr = sr.StandardOutput
发送/阅读就像sr.ReadLine,sw.Writeline!
一样简单答案 2 :(得分:0)
使用输入/输出重新存储
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
使用cmd.StandardInput
和cmd.StandardOutput
来读取/写入流程。