2013-05-21 8 views
6

Witam mam pytanie do C# i plików wsadowych. Chcę wykonać polecenie wsadowe i zapisać wynik w ciąg w C#. ale mogę tylko wykonać plik, ale nie zapisać tej treści w łańcuchu i pokazać to w polu tekstowym.Jak mogę wykonać polecenie wsadowe bezpośrednio w języku C#?

mój plik wsadowy:

@echo off

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

Oto mój kod 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; 
} 

Chcę, aby wyjście i mieszanie i jeśli mogę to zrobić, chcę, że nie mam pliku wsadowego. Chcę zrobić to polecenie batvchcand w C# ... Czy mogę to zrobić?

+0

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

+0

wygląd do mojej aktualizacji ... – Tarasov

Odpowiedz

5

Nie trzeba używać "CMD.exe" do uruchamiania aplikacji z poleceniami lub odzyskiwania danych wyjściowych, możesz użyć "lmxendutil.exe" bezpośrednio.

Spróbuj tego:

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

Czy modyfikacje do korzystania z "polecenia" tam.

Mam nadzieję, że to pomoże.

2

To nie wygląda na to, że twój plik wsadowy będzie produkować dane wyjściowe. Jeśli uruchomisz go w linii poleceń, widzisz wyjście? Masz operatora przekierowania > w linii pliku bat, więc wydaje się, że wysyłasz dane wyjściowe do pliku xml.

Jeśli zapisałeś dane wyjściowe do pliku xml, może powinieneś po prostu załadować to przy użyciu C# po zakończeniu procesu.

+0

wygląd do mojej aktualizacji ... z mojego polecenia to nie działa ale z testem echo otrzymuję test – Tarasov

Powiązane problemy