Как я могу выполнить пакетную команду на С# напрямую?

Я хочу выполнить пакетную команду и сохранить вывод в строке, но я могу только выполнить файл и не могу сохранить содержимое в строке.

Пакетный файл:

@эхо выключено

"C:\lmxendutil.exe" -licstatxml -host serv005 -port 6200>C:\Temp\HW_Lic_XML.xml блокнот C:\Temp\HW_Lic_XML.xml

Код С#:

private void btnShowLicstate_Click(object sender, EventArgs e)
{
     string command = "'C:\\lmxendutil.exe' -licstatxml -host lwserv005 -port 6200";

     txtOutput.Text = ExecuteCommand(command);
}

static string ExecuteCommand(string command)
{
     int exitCode;
     ProcessStartInfo processInfo;
     Process process;

     processInfo = new ProcessStartInfo("cmd.exe", "/c " + command);
     processInfo.CreateNoWindow = true;
     processInfo.UseShellExecute = false;
     // *** Redirect the output ***
     processInfo.RedirectStandardError = true;
     processInfo.RedirectStandardOutput = true;

     process = Process.Start(processInfo);
     process.WaitForExit();

     // *** Read the streams ***
     string output = process.StandardOutput.ReadToEnd();
     string error = process.StandardError.ReadToEnd();

     exitCode = process.ExitCode;

     process.Close();

     return output; 
}

Я хочу вывести строку и сделать это прямо на С# без командного файла, возможно ли это?


person Tarasov    schedule 21.05.2013    source источник


Ответы (2)


Не нужно использовать «CMD.exe» для выполнения приложения командной строки или получения вывода, вы можете напрямую использовать «lmxendutil.exe».

Попробуй это:

processInfo = new ProcessStartInfo();
processInfo.FileName  = "C:\\lmxendutil.exe";
processInfo.Arguments = "-licstatxml -host serv005 -port 6200";
//etc...

Внесите свои изменения, чтобы использовать там «команду».

Надеюсь, это поможет.

person ElektroStudios    schedule 21.05.2013

Мне не кажется, что ваш пакетный файл выдаст какой-либо результат. Если вы запустите его в командной строке, вы увидите вывод? У вас есть оператор перенаправления > в строке файла bat, поэтому кажется, что вы отправляете вывод в файл xml.

Если вы сохранили вывод в файл xml, возможно, вам следует просто загрузить его с помощью C # после завершения вашего процесса.

person Andy Brown    schedule 21.05.2013
comment
посмотрите на мое обновление ... с моей командой это не работает, но с эхо-тестом я получаю тест - person Tarasov; 21.05.2013