Laufen .bat-Datei von C#

stehe ich vor einem seltsamen Problem , ich habe einen .bat-Datei, die enthält einen code für das umbenennen einer Datei , wenn ich öffnen Sie die .bat-Datei, die manuell es tut, was es geschrieben ist, das ist die Umbenennung einer Datei , aber wenn ich versuche es zu öffnen programtically von C# , die es nicht tun , Sie einfach öffnen Sie die Datei und kompilieren Sie nicht, was es ist geschrieben in . ich tippte, dass-code :

Process.Start(@"file.bat");

Ich wusste auch, wenn Sie die eingegebene Pfad in cmd und enter gedrückt wird öffnen Sie die Datei und kompilieren Sie es , also ich schrieb, dass :

ProcessStartInfo psi3 = new ProcessStartInfo("cmd", "/c " + '"'+"D:\\my Work\\My Soft\\CA Delete\\CA Delete\\bin\\Debug\\file.bat"+'"');
Process p3 = Process.Start(psi3);
p3.WaitForExit()

Aber immer noch das gleiche Problem : die Datei wird geöffnet, aber nie das macht, was es ist in es geschrieben.

EDIT : [ich Dachte, warum]

Nahm ich einen snap-shot von der CMD von windows, die ausgeführt werden soll die .bat-Datei, und ich erhielt den FEHLER :

ERROR : THE FILE SPECIFIED COULD NOT BE FOUND

aber wie ? wenn ich das ausführen .bat-Datei manuell funktioniert es einwandfrei!!!

  • Versuchen WorkingDirectory von ProcessStartInfo.
  • Ich verstehe nicht,
  • Warum nicht Lesen Sie die batch-Datei und jede Zeile einzeln? Als eine verwaltete alternative .NET hat die Fähigkeit zu tun, die meisten Datei-manipulation Aufgaben; Sie können möglicherweise verwenden Sie eine der vielen .NET-scripting-Optionen zur Verfügung. Noch eine alternative wäre zum einbetten von Powershell, die die Fähigkeit hat, ausgeführt werden .NET.
  • Warum nicht port der batch-Datei Inhalt um C# - code? Umbenennen einer Datei wird einfach mit Hilfe der System.IO.File Klasse.
  • Kirill Polishchuk geschrieben die Antwort. Wenn deine bat-Datei enthält so etwas wie rename file1.txt file2.txt dann cmd.exe sucht im aktuellen Arbeitsverzeichnis für file1.txt. So müssen Sie die WorkingDirectory - Eigenschaft für die Datei zu finden.
  • Ich verstehe nicht, was bedeutet WorkingDirectory bedeuten
  • Wenn Sie einen Dateinamen ohne Pfad (wie file1.txt) wie funktioniert die Windows wissen, wo es zu finden ist? Die Antwort ist, dass es sieht im aktuellen Verzeichnis, auch bekannt als working directory. Wenn Sie einen Prozess starten, müssen Sie Windows mitteilen, welches Verzeichnis für das aktuelle Verzeichnis (in deinem Fall denke ich, es ist das Verzeichnis mit der batch-Datei). Sie tun dies, indem Sie die Eigenschaft WorkingDirectory auf Ihre ProcessStartInfo-Objekt.

InformationsquelleAutor BOSS | 2012-02-17
Schreibe einen Kommentar