Ich verwende eine Batchdatei in folder1/folder2/file.bat
Es gibt eine Batchdatei im übergeordneten Ordner folder1
, die ich über file.bat
Ich habe versucht mit:
%Vor%Aber das führt zu einer Fehlermeldung, weil die Datei nicht gefunden wurde.
Irgendwelche Ideen?
Ich möchte besser erklären, was mit einem Beispiel verwendet werden sollte, da die bisher geposteten Antworten nur mit dem aktuellen Arbeitsverzeichnis funktionieren, das das Verzeichnis mit der Batch-Datei file.bat
ist.
Es gibt eine Verzeichnisstruktur wie folgt:
Das aktuelle Arbeitsverzeichnis ist C: \ Temp beim Ausführen von Example.bat
entweder mit
oder mit
%Vor% Die Batch-Datei Parent.bat
enthält zum Beispiel:
Die Batch-Datei Example.bat
enthält bereits:
Die wirklich funktionierenden Lösungen in diesem Szenario, bei denen das aktuelle Arbeitsverzeichnis ein anderes Verzeichnis ist als das Verzeichnis, das Example.bat
enthält, sind wie folgt.
%0
verweist auf Argument 0 bei Ausführung der Batch-Datei, die immer der Name der Batch-Datei ist, wie im übergeordneten Prozess beim Starten der Batch-Datei angegeben.
Aber gewünscht ist das Laufwerk und der Pfad der Batch-Datei ohne Anführungszeichen. Daher wird der Ausdruck %~dp0
verwendet, um C: \ Temp \ Ordner 1 \ Ordner 2 \ von Argument 0 abzurufen.
Auf diesem Pfad wird die Zeichenfolge .. \ Parent.bat angehängt und zusätzlich der gesamte neue Dateiname
C: \ Temp \ Folder 1 \ Folder 2 \ .. \ Parent.bat ist wegen der Leerzeichen in doppelte Anführungszeichen eingeschlossen.
Nach der Verarbeitung von Example.bat
finished gibt es keine Rückkehr zu Parent.bat
.
Der Befehl call führt zur Ausführung der Batchdatei Parent.bat
im selben Befehlsprozess (Konsolenfenster) mit der Ausführung von Example.bat
bis Parent.bat
beendet.
Die Batch-Ausführung wird in der nächsten Zeile in Example.bat
nach der Verarbeitung von Parent.bat
beendet fortgesetzt.
Ausnahme:
Parent.bat
enthält den Befehl exit
ohne den Schalter /B
, da dies zu einem sofortigen Beenden des Befehlszeileninterpreters führt cmd.exe
processing Example.bat
und Parent.bat
.
Führen Sie call /?
oder help call
in einem Eingabeaufforderungsfenster für kurze Hilfe auf Befehl call aus.
Der Befehl start ohne Parameter mit Ausnahme des optionalen Titels führt zur Ausführung der Batch-Datei Parent.bat
durch einen separaten Befehlsprozess in einem separaten Konsolenfenster, ohne die Ausführung von Example.bat
zu stoppen.
Daher laufen beide Batch-Dateien gleichzeitig (mehr oder weniger).
Hinweis:
Befehl start interpretiert die erste Zeichenfolge in Anführungszeichen als Titel. Daher ist es notwendig, einen Titel in doppelten Anführungszeichen zu definieren, wenn die zu startende Batch-Datei oder Anwendung oder ein beliebiges Argument der gestarteten Batch-Datei / Anwendung wegen mindestens 1 Leerzeichen in Anführungszeichen gesetzt werden muss.
Führen Sie start /?
oder help start
in einem Eingabeaufforderungsfenster aus, um kurze Hilfe zum Befehl start zu erhalten.
Der Befehl start mit dem optionalen Parameter /wait
führt dazu, dass die gestartete Batchdatei / Anwendung als separater Prozess ausgeführt wird (zusätzliches Konsolenfenster für eine Batchdatei oder Konsolenanwendung), aber die Ausführung der aktuelle Batchdatei bis zum gestarteten Prozess (Windows-Anwendung oder Batchdatei / Konsolenanwendung, die in einem neuen Konsolenfenster ausgeführt wird) beendet sich selbst.
Tags und Links batch-file navigation