Piping in einer Datei in der Befehlszeile mit System.Diagnostics.Process

8

Ich versuche, ein Befehlszeilenprogramm auszuführen und eine Datei in eine Pipe zu leiten. Der Befehl funktioniert gut in der Befehlszeile, aber ich kann nicht scheinen, es mit dem Process-Objekt in C # zu arbeiten. Hier ist der Befehl, den ich ausstelle:

"C: \ Server \ CollabNet Subversion Server \ svnadmin" laden Sie C: \ Repositories \ TestLoad & lt; C: \ Temp \ test.dump

Diese Funktion funktioniert gut mit allen anderen Befehlen, die ich an sie übergebe, außer dem obigen Befehl:

%Vor%

Ich habe verschiedene Kombinationen dieser Funktion ausprobiert, aber das funktioniert nicht. Ich bekomme immer eine Meldung "Das System kann die angegebene Datei nicht finden". Ich bin jetzt seit ungefähr einer Woche dabei und ich denke, ich brauche ein paar Augen, um zu sehen, was ich falsch mache.

    
Hector Sosa Jr 12.05.2009, 01:50
quelle

3 Antworten

8

Sowohl Mark als auch Luke gaben mir die richtige Richtung. Ich konnte keine der beiden Antworten verwenden, da ich dies tun musste, um mit Mono unter Linux laufen zu können. Also schrieb ich wie vorgeschlagen zum StandardInput. Hier ist der Code, der funktioniert:

%Vor%     
Hector Sosa Jr 12.05.2009, 04:14
quelle
5

Ich bin mir nicht 100% ig sicher, aber ich würde annehmen, dass Sie die Daten manuell von test.dump an den Prozess übergeben müssen, indem Sie die Eigenschaft StandardInput verwenden.

Andernfalls könnten Sie cmd.exe verwenden, um den Befehl auszuführen:

%Vor%

Der Grund dafür ist, dass das "& gt;", "& lt;" und "|" Operatoren werden von der Shell selbst (cmd.exe) implementiert.

    
Luke Quinane 12.05.2009 02:13
quelle
1

Ich schätze, Sie sollten den StandardInput anhängen und selbst in die Datei schreiben. Sie könnten es mit ShellExecute = true versuchen, aber ich bin mir nicht sicher, ob es funktioniert.

    
Mark Brackett 12.05.2009 02:13
quelle

Tags und Links