У меня есть программа для записи некоторых команд в командный файл.Когда я отлаживаю это, программа ничего не пишет и просто меняет строку.
Есть несколько команд, которые являются отдельными, поэтому я использую if(ex* = true)
для обозначения последовательности команд.однажды я изменил стандартный ввод на console.writeline
, он ничего не делает.
Когда я отлаживаю с помощью Standardinfo, пакетный файл постоянно зацикливается, что происходит, когда ничего не вводится или вводится неверно.но console.writeline
просто остановитесь в тот момент, когда должна быть введена первая команда.
Я думаю, может быть проблема в том, что я не даю время писать?но когда я пишу код pro.waitforexit()
, программа просто зависает.поэтому я не уверен, что не так.
Код
private void button2_Click(object sender, EventArgs f)
{
pro.StartInfo.FileName = Path.Combine(textBox1.Text, "reproject_v1.2.bat");
pro.StartInfo.UseShellExecute = false;
pro.StartInfo.CreateNoWindow = true;
pro.StartInfo.RedirectStandardInput = true;
pro.StartInfo.RedirectStandardOutput = true;
pro.StartInfo.RedirectStandardError = true;
pro.OutputDataReceived += (s, e) => myMethod(e);
pro.EnableRaisingEvents = true;
pro.Start();
pro.BeginOutputReadLine();
if (ex1 == false)
{
pro.StandardInput.WriteLine(textBox1.Text + @"\\");
ex1 = true;
}
if (ex1 == true)
{
pro.StandardInput.WriteLine("inputdata.txt");
ex1 = false;
ex2 = true;
}
if (ex2 == true)
{
pro.StandardInput.WriteLine(textBox2.Text);
ex2 = false;
ex3 = true;
}
if (ex3 == true)
{
pro.StandardInput.WriteLine("y");
ex3 = false;
ex4 = true;
}
pro.StandardInput.Close();
pro.Close();
MessageBox.Show("Check output files are exist");
}