2012-09-28 12 views
6

Próbuję wywołać skrypt Ant z aplikacji C#. Chcę, aby okno konsoli wyskakiwało i pozostało w górze (właśnie dzwonię do wiersza poleceń, ale w końcu chcę zadzwonić do skryptu mrówkowego, który może zająć do godziny). Jest to kod, który używam, którą może różnić się od tej original:Wywołanie polecenia i pozostaw otwarte okno

public void ExecuteCommandSync(object command) 
{ 
    try 
    { 
     // create the ProcessStartInfo using "cmd" as the program to be run, 
     // and "/c " as the parameters. 
     // Incidentally, /c tells cmd that we want it to execute the command that follows, 
     // and then exit. 
     System.Diagnostics.ProcessStartInfo procStartInfo = 
     new System.Diagnostics.ProcessStartInfo("cmd", "/k " + command); 

     // The following commands are needed to redirect the standard output. 
     // This means that it will be redirected to the Process.StandardOutput StreamReader. 
     procStartInfo.RedirectStandardOutput = true; 
     procStartInfo.UseShellExecute = false; 
     // Do not create the black window. 
     procStartInfo.CreateNoWindow = false; 
     // Now we create a process, assign its ProcessStartInfo and start it 
     System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
     proc.StartInfo = procStartInfo; 

     proc.Start(); 
     proc.WaitForExit(); 

    } 
    catch (Exception objException) 
    { 
     Console.WriteLine(objException); 
    } 
} 

Chcę także przekazać w maksymalnie 5 parametrów, ale teraz jestem po prostu zaniepokojony z zachowaniem okno otwarte na tyle długo, aby zobaczyć, co się dzieje, i nie jestem zainteresowany czytaniem treści wygenerowanych przez skrypt Ant. Nie chcę nikogo prosić o wykonanie mojej pracy dla mnie, ale od pewnego czasu walę głową w tę, więc każda pomoc będzie bardzo ceniona!

Odpowiedz

7

Ta linia;

To, co powoduje zamknięcie okna. Usuń ten wiersz lub dodaj moduł obsługi do Process.StandardOutput, aby odczytać zawartość w innym miejscu;

string t = proc.StandardOutput.ReadToEnd(); 
+0

To działało! Byłem sfrustrowany tym przez większość dnia. Masz pomysł, jak sprawić, by działał z wieloma poleceniami? Zwłaszcza te o białej przestrzeni, takie jak: cd c: \\ users \\ – Stubbs

+2

Polecenia ze spacjami powinny być interpretowane poprawnie jako-jest. Dla wielu poleceń; Być może będziesz musiał wysłać polecenia do pliku wsadowego lub spojrzeć na wysyłanie poleceń do StandardInputStream, nie sądzę, że możesz po prostu wysłać wszystko w jednym ciągu. –

+0

Można również wysłać wiele parametrów takich jak to: [link] (http://stackoverflow.com/questions/5591382/how-to-execute-multiple-cammand-in-command-prompt-using-c-sharp). Zmienia to katalogi i przekazuje 4 parametry do pliku wsadowego. Może być komuś pomocna. – Stubbs

Powiązane problemy