Ich habe eine Batch-Datei, die andere Batch-Dateien wie folgt aufruft:
e:\foo\master.bat
hat den Inhalt:
call e:\bar\run1.bat
und e:\bar\run1.bat
hat den Inhalt
app1.exe
Das Problem ist, dass beim Ausführen das master.bat
app1.exe
nicht ausgeführt wird, da erwartet wird, dass es sich im e:\foo
Verzeichnis befindet, anstatt dass es sich im e:\bar
Verzeichnis befindet
Pushd
Methode funktioniert am besten für mich, daapp1.exe
intern auch das aktuelle Verzeichnis verwendet wird und bei Verwendung von Pushd das Verzeichnis verwendet wird, in demapp1.exe
sich das Verzeichnis befindet. Ohne Pushd (jedoch mit dem Präfix) wird dermaster.bat
Speicherort verwendetDie Antwort auf Ihre Frage kann aus einer ähnlichen Frage zum Stapelüberlauf abgeleitet werden.
Was ist das aktuelle Verzeichnis in einer Batchdatei?
Mit den hier genannten Variablen können Sie run1.bat aktualisieren, um app1.exe mit der folgenden Zeile aufzurufen :
%~dp0app1.exe
. (Die Variable% ~ dp0 enthält einen abschließenden Schrägstrich.) Dadurch wird die Batchdatei angewiesen, die ausführbare Datei vom Speicherort der aktuellen Batchdatei aus auszuführen.quelle