bat file: Erhalte den übergeordneten Pfadnamen

8

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%     
bmargulies 31.01.2010, 15:02
quelle

3 Antworten

17

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

benannt wird

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%     
Frank Bollack 31.01.2010, 16:22
quelle
7

Hier ist ein One Liner

%Vor%     
dbenham 15.11.2012 13:05
quelle
2

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.

    
drzaus 16.07.2013 16:19
quelle

Tags und Links