studio - ¿Cómo puedo ejecutar un comando por lotes en C#directamente?
llamar un servicio windows desde c# (2)
hola tengo una pregunta para c # y archivos por lotes. Quiero ejecutar un comando por lotes y guardar el resultado en una cadena en c #. pero solo puedo ejecutar el archivo pero no guardar este contenido en una cadena y mostrar esto en un cuadro de texto.
mi archivo por lotes
@echo off
"C: / lmxendutil.exe" -licstatxml -host serv005 -port 6200> Libreta de C: / Temp / HW_Lic_XML.xml C: / Temp / HW_Lic_XML.xml
Aquí está mi código c #:
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;
}
Quiero que la salida sea agitada y si puedo hacer esto quiero que no tenga un archivo por lotes. Quiero hacer este comando de batvch en c # ... ¿puedo hacer esto?
No es necesario utilizar "CMD.exe" para ejecutar una aplicación de línea de comandos o recuperar el resultado, puede usar "lmxendutil.exe" directamente.
Prueba esto:
processInfo = new ProcessStartInfo();
processInfo.FileName = "C://lmxendutil.exe";
processInfo.Arguments = "-licstatxml -host serv005 -port 6200";
//etc...
Haga sus modificaciones para usar "comando" allí.
Espero que esto ayude.
No me parece que su archivo por lotes produzca ningún resultado. Si lo ejecuta en la línea de comando, ¿ve una salida? Tiene el operador de redirección >
en su línea de archivo bat, por lo que parece que está enviando salida al archivo xml.
Si ha guardado el resultado en un archivo xml, tal vez debería cargarlo usando C # una vez que finalice su proceso.