2013-05-21 29 views
6

ciao ho una domanda per C# e file batch. Voglio eseguire un comando batch e salvare l'output in una stringa in C#. ma posso solo eseguire il file ma non salvare questo contenuto in una stringa e mostrarlo in una casella di testo.Come posso eseguire un comando batch in C# direttamente?

mio file batch:

@echo off

"C: \ lmxendutil.exe" -licstatxml -host serv005 -port 6200> C: \ Temp \ HW_Lic_XML.xml notepad C: \ Temp \ HW_Lic_XML.xml

Ecco il mio codice 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; 
} 

Voglio che l'output sia a mio agio e se posso farlo voglio che non abbia un file batch. voglio fare questo batvchcommand direttamente in C# ... posso farlo?

+0

http://stackoverflow.com/questions/5519328/executing-batch-file-in-c-sharp – Rahul

+0

guarda il mio aggiornamento ... – Tarasov

risposta

5

Non è necessario utilizzare "CMD.exe" per eseguire un'applicazione della riga di comando o recuperare l'output, è possibile utilizzare direttamente "lmxendutil.exe".

Prova questo:

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

fare le modifiche di usare "comando" lì.

Spero che questo aiuti.

2

Non mi sembra che il file batch produrrà alcun output. Se lo si esegue nella riga di comando, viene visualizzato un risultato? Hai l'operatore di reindirizzamento > nella tua linea di file bat, quindi sembra che tu stia inviando l'output al file xml.

Se hai salvato l'output in un file xml, forse dovresti caricarlo utilizzando C# una volta terminato il processo.

+0

guarda il mio aggiornamento ... con il mio comando non funziona ma con il test dell'eco ricevo il test – Tarasov

Problemi correlati