C # проблема с запуском консольной команды - PullRequest
1 голос
/ 27 января 2011

Привет, я пытаюсь запустить команду DOS в C #. Когда я запускаю команду из консоли, она работает нормально. Но я не могу получить вывод команды. Код ниже.

String runCommand = "-classpath C:\\Users\\ZZZ\\Desktop\\javatest Javatest >C:\\outt.txt";
ProcessStartInfo runProcessStartInfo = new ProcessStartInfo("java.exe", runCommand);
runProcessStartInfo.RedirectStandardOutput = true;
runProcessStartInfo.UseShellExecute = false;
runProcessStartInfo.CreateNoWindow = true;

Process runProcess = new Process();
runProcess.StartInfo = runProcessStartInfo;
runProcess.Start();

StreamReader output = runProcess.StandardOutput;  
OutputTextBox.Text = output.ReadToEnd();

runProcess.WaitForExit();

Кроме того, когда я устанавливаю runCommand, например, "dir", он работает нормально В чем может быть проблема?

Ответы [ 3 ]

3 голосов
/ 27 января 2011

Вам не нужно звонить в cmd / c

Вы можете напрямую звонить в java.

ProcessStartInfo runProcessStartInfo = new ProcessStartInfo(
              "java.exe", "-classpath C:\\Users\\ZZZ\\Desktop\\javatest Javatest")
runProcessStartInfo.RedirectStandardOutput = true;
runProcessStartInfo.UseShellExecute = false;
runProcessStartInfo.CreateNoWindow = true;

Process runProcess = new Process();
runProcess.StartInfo = runProcessStartInfo;
string output = p.StandardOutput.ReadToEnd();
runProcess.WaitForExit();
runProcess.Close();


OutputTextBox.Text = output;
1 голос
/ 27 января 2011

Вам также нужно будет дождаться выхода из программы.Вы можете сделать что-то вроде этого:

runProcess.Start();

using (StreamReader output = runProcess.StandardOutput)
{
    OutputTextBox.text = output.ReadToEnd();
}

runProcess.WaitForExit();

Конечно, вы должны будете убедиться, что ваша Java-программа в первую очередь выполняет запись в стандартный вывод и что она не требует какого-либо пользовательского ввода вЧтобы закончить бежать.

0 голосов
/ 07 мая 2011

Попробуйте прочитать поток StandardError.Иногда Java помещает выходной текст в поток ошибок.

String runCommand = "-classpath C:\\Users\\ZZZ\\Desktop\\javatest Javatest >C:\\outt.txt";
ProcessStartInfo runProcessStartInfo = new ProcessStartInfo("java.exe", runCommand);
runProcessStartInfo.RedirectStandardError = true;
runProcessStartInfo.UseShellExecute = false;
runProcessStartInfo.CreateNoWindow = true;

Process runProcess = new Process();
runProcess.StartInfo = runProcessStartInfo;
runProcess.Start();

StreamReader output = runProcess.StandardError;  
OutputTextBox.Text = output.ReadToEnd();

runProcess.WaitForExit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...