Das Folgende funktioniert meistens. 'Mostly', weil die Verwendung von SOMETHING .. \ tasks \ Pfadname Spring verwechselt, wenn eine XML-Kontextdatei versucht, eine andere nach relativem Pfadnamen einzubeziehen. Was ich also brauche, ist eine Möglichkeit, in einer BAT-Datei eine Variable auf das übergeordnete Verzeichnis eines Pfadnamens zu setzen.
%Vor%Um einen relativen Pfadnamen aufzulösen, können Sie einen Unterprogrammaufruf verwenden. Am Ende Ihrer Batch-Datei platzieren Sie die folgenden Zeilen:
%Vor% Dies ist eine Unterroutine, die ihren ersten Parameter in einen vollständigen Pfad ( %~f1
) auflöst und das Ergebnis in der (globalen) Variablen speichert, die durch den zweiten Parameter
Sie können die Routine wie folgt verwenden:
%Vor% Nach dem Aufruf können Sie die Variable %PARENT_ROOT%
verwenden, die den übergeordneten Pfadnamen enthält, der in der Variablen %ROOT%
enthalten ist.
Ihre vollständige Batch-Datei sollte wie folgt aussehen:
%Vor%Um auf die akzeptierte Antwort zu erweitern, wenn Sie weiter den Pfad hoch marschieren möchten (um das Elternverzeichnis des Elterns zu erhalten) (zum Beispiel), entfernen Sie den folgenden Schrägstrich:
%Vor%Verwendung:
%Vor% würde C:\My\Path
von C:\My\Path\Child\file.bat
ergeben.
Wenn ich es besser verstanden habe, würde ich eine "Wrapper-Funktion" vorschlagen, damit Sie CALL :REMOVE_SEGMENTS %path% 3 PARENT
die letzten 3 Segmente von %path%
entfernen können.
Tags und Links cmd batch-file pathname