Wie ruft man eine Batch-Datei auf, die eine Ebene höher ist als das aktuelle Verzeichnis?

7

Ich verwende eine Batchdatei in folder1/folder2/file.bat

Es gibt eine Batchdatei im übergeordneten Ordner folder1 , die ich über file.bat

öffnen möchte

Ich habe versucht mit:

%Vor%

Aber das führt zu einer Fehlermeldung, weil die Datei nicht gefunden wurde.

Irgendwelche Ideen?

    
Jason Moore 13.07.2014, 12:35
quelle

4 Antworten

6

Sie könnten einfach:

%Vor%

Und das würde code.bat aus seinem eigenen Verzeichnis starten

    
Monacraft 13.07.2014, 12:42
quelle
11

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:

  • C: \
    • Temp
      • Ordner 1
        • Ordner 2
          • Beispiel.bat
        • Parent.bat

Das aktuelle Arbeitsverzeichnis ist C: \ Temp beim Ausführen von Example.bat entweder mit

%Vor%

oder mit

%Vor%

Die Batch-Datei Parent.bat enthält zum Beispiel:

%Vor%

Die Batch-Datei Example.bat enthält bereits:

%Vor%

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.

Setzen Sie die Stapelverarbeitung mit Parent.bat fort

%Vor%

%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 .

Rufen Sie Parent.bat wie eine Unterroutine

auf %Vor%

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.

Starten Sie Parent.bat als parallelen Prozess

%Vor%

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.

Rufen Sie Parent.bat als separaten Prozess

auf %Vor%

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.

    
Mofi 13.07.2014 16:52
quelle
5

..\ wird verwendet, um eine Ebene höher zu gehen. Ihr Fall erfordert zwei Stufen höher Probieren Sie:

%Vor%     
DoubleM 13.07.2014 12:37
quelle
3

versuche, dies zu verwenden:

%Vor%     
Jarek606 13.07.2014 12:41
quelle

Tags und Links