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.
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% 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:
Der Grund dafür ist, dass das "& gt;", "& lt;" und "|" Operatoren werden von der Shell selbst (cmd.exe) implementiert.
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.
Tags und Links c# command-line