Es gibt eine Batch-Datei, die ich ausführen möchte, wenn ich den Knopf drücke. Mein Code funktioniert gut, wenn ich den absoluten (vollen) Pfad verwende. Die Verwendung des relativen Pfads verursacht jedoch eine Ausnahme. Dies ist mein Code:Eine Stapeldatei im relativen Pfad ausführen?
private void button1_Click(object sender, EventArgs e)
{
//x64
System.Diagnostics.Process batchFile_1 = new System.Diagnostics.Process();
batchFile_1.StartInfo.FileName = @"..\myBatchFiles\BAT1\f1.bat";
batchFile_1.StartInfo.WorkingDirectory = @".\myBatchFiles\BAT1";
batchFile_1.Start();
}
und die erhöhte Ausnahme:
Das System kann die angegebene Datei nicht finden.
Das Verzeichnis der Batchdatei ist:
C:\Users\GntS\myProject\bin\x64\Release
ich gesucht und keines der Ergebnisse hat mir geholfen:
C:\Users\GntS\myProject\bin\x64\Release\myBatchFiles\BAT1\f1.bat
Die Ausgabe .exe
Datei in befindet. Was ist der richtige Weg, um eine Batch-Datei im relativen Pfad zu laufen ?!
Sie können ausführbaren Pfad erhalten, finden Sie unter: [HOW TO: Bestimmen Sie die Ausführung von Anwendungs des Path] (https://msdn.microsoft.com/en-us/library/aa457089.aspx) –
@MaciejLos Ja, kann ich. Aber was ist mit .. \\ oder \\? Ich habe sie immer erfolgreich benutzt. – GntS
Laut der Dokumentation, wenn 'UseShellExecute' wahr ist (und das ist der Standardwert), wird die ausführbare Datei relativ zum Arbeitsverzeichnis durchsucht. Das bedeutet, dass Sie versuchen, '. \ MyBatchFiles \ BAT1 \ .. \ myBatchFiles \ BAT1 \ f1.bat' auszuführen, das in' C: \ Benutzer \ GntS \ myProject \ bin \ x64 \ Release \ myBatchFiles \ aufgelöst wird. myBatchFiles \ BAT1 \ f1.bat' (beachte die beiden 'myBatchFiles') –