1
我製作了一個頁面,允許用戶查看服務器上的批處理文件列表並運行它們。遠程運行批處理文件,向用戶顯示結果並允許用戶提供輸入
問題是批處理文件需要輸入如「按任意鍵繼續」或「如果您確定要繼續按Y」。目前我的代碼提供輸入預設情況:
if (outputLine.Contains("Y or N"))
inputLine = "Y";
if (outputLine.Contains("pause"))
inputLine = "X";
但我現在想給用戶提供的輸入,而不是我的代碼的能力。
我已經花了大部分時間研究如何做到這一點,並沒有提出任何建議。
這裏是我的代碼:
private void RunScript(int scriptId)
{
ScriptData data = new ScriptData();
Script script = data.GetScript(scriptId);
ProcessStartInfo psi = new ProcessStartInfo()
{
FileName = script.Path,
RedirectStandardOutput = true,
RedirectStandardInput = true,
UseShellExecute = false,
CreateNoWindow = false
};
Process proc = new Process();
proc.StartInfo = psi;
proc.Start();
StreamReader reader = proc.StandardOutput;
StreamWriter writer = proc.StandardInput;
string outputLine;
string inputLine = string.Empty;
string display = string.Empty;
while (!reader.EndOfStream)
{
outputLine = reader.ReadLine();
display += outputLine + "\r\n";
if (inputLine != string.Empty)
display += inputLine + "\r\n";
inputLine = string.Empty;
if (outputLine.Contains("Y or N"))
inputLine = "Y";
if (outputLine.Contains("pause"))
inputLine = "X";
if (inputLine != string.Empty)
writer.WriteLine(inputLine);
}
display = Server.HtmlEncode(display);
display = display.Replace("\r\n", "<br />");
litOutput.Text = display;
}