Ausführen einer Batch-Datei von C #

8

UPDATE ** SUCHE NOCH EINE RICHTIGE ANTWORT ** Ich habe den folgenden Code in meinem Windows-Dienst und ich möchte eine Batch-Datei ausführen. Ich möchte das Eingabeaufforderungsfenster hoch, damit ich den Fortschritt sehen kann

Hier ist mein Code, aber mein Batch-Dateicode funktioniert nicht

%Vor%

Die Batch-Datei wird nicht ausgeführt. Ich bin ein Neuling in .net und C # und ich bin mir nicht sicher, was ich von hier aus tun soll. Danke

    
Autolycus 18.08.2011, 01:13
quelle

6 Antworten

4

Wie wird die Konsolenanwendung vom Windows-Dienst ausgeführt?

Sie wollen die p.StartInfo mit FileName="cmd.exe" und Argumente="c: \\ thebatfile.bat" ich glaube

setzen     
mike z 18.08.2011, 01:48
quelle
2

Das Problem ist, dass Sie UseShellExecute als false haben, aber Sie geben den Namen einer ausführbaren Datei nicht weiter.

Wenn ShellExecute verwendet wird, ähnelt es einem Doppelklick auf eine Datei im Explorer - es weiß, dass .doc-Dateien mit Word geöffnet werden müssen und dass .bat-Dateien mit cmd.exe geöffnet werden müssen. Wenn Sie dies deaktiviert haben, kennt es jedoch keines dieser Dinge und Sie müssen eine ausführbare Datei übergeben, damit alles erfolgreich ausgeführt werden kann.

Wenn Sie RedirectStandardOutput auf "true" setzen, müssen Sie stattdessen die Batch-Datei über cmd.exe ausführen, indem Sie FileName auf cmd.exe und die Argumente auf /C "c:\myFile.bat" :

setzen %Vor%     
Justin 23.08.2011 13:50
quelle
0

Es sieht so aus, als ob es das Batch-Script ausführt, wenn der Service zum ersten Mal ausgeführt wird und dann beendet wird ( p.WaitForExit(); ), bevor die anderen Funktionen die Fähigkeit erhalten, aufgerufen zu werden. Ist das das beabsichtigte Verhalten? Das würde erklären, warum Sie sehen, dass es die Ordneroperationen ausführt und nicht sieht, dass das Skript ausgeführt wird.

Versuchen Sie diesen Code, um das Konsolenfenster aufzurufen. Es sollte Ihnen eine Vorstellung davon geben, wann das Batch-Skript ausgeführt wird.

%Vor%     
James Leonis 18.08.2011 02:02
quelle
0

Ich zweifle an Ihrem Service oder der Fledermaus-Datei. Ändern Sie den Quellcode, um einen Notizblock zu öffnen! Überprüfen Sie, ob Notepad angezeigt wird !! Wenn ja, dann können wir weiter nachforschen!

    
ioWint 18.08.2011 04:47
quelle
0

Was macht Ihre Batch-Datei? Angenommen, Sie haben bestätigt, dass dies OK ist.

    
glendon 23.08.2011 13:32
quelle
0

Windows-Dienste werden unter einem Desktop-Benutzerkonto ausgeführt. Um das cmd-Fenster anzuzeigen, müssen Sie die Identität des aktuell angemeldeten Benutzers annehmen und das cmd-Fenster auf dem Desktop dieses Benutzers starten. Siehe dies:

Windows-Identitätswechsel von C #

    
Alexandru Dicu 09.10.2012 12:43
quelle