2009-06-10 7 views
15

mit Kommandozeile Struggling wieder, ich habe herausfinden, dass ich wie so das aktuelle Arbeitsverzeichnis in einer Variablen speichern kann:Wie setze ich eine Variable auf den Pfad des übergeordneten Verzeichnisses in Windows?

SET current=%cd% 

Wie würde ich allerdings eingestellt Eltern? SET parent=%..% nicht funktioniert, wie es %..%

Grundsätzlich Echos, ein Batch-Skript C:\a\b\myscript.bat mit folgendem Inhalt Aufruf:

@echo off 
set current=%cd% 
echo %current% 

druckt C:\a\b und ich möchte eine Variable parent, so dass sie drucken würden C:\a ohne das aktuelle Arbeitsverzeichnis zu ändern ..

Ist das möglich?

Antwort

33

Verschieben Sie ein Verzeichnis auf, die aktuelle Erinnerung, stellen Sie den Eltern, und dann ein Verzeichnis Pop nach unten, zurück, wo Sie begonnen

@echo off 
set current=%cd% 
pushd .. 
set parent=%cd% 
popd 

echo current %current% 
echo parent %parent% 
+0

Perfekt! Ich erinnere mich, dass ich den Pushd und Popd irgendwo gesehen habe, aber es ist mir völlig in den Sinn gekommen. Danke für Ihre Hilfe. –

+0

Sie sind mehr als willkommen Kumpel :) –

2

Verwenden

pushd targetFolder 
set current=%cd% 
popd 

Pushd/popd halten einen Stapel von zuvor besuchten Verzeichnissen.

+0

danke auch für Ihre Hilfe –

8

Man könnte auch so etwas tun:

 
set current=%CD% 
set parent=%CD%\.. 

Es gibt nicht Sie den kanonischen Namen der übergeordneten, aber es sollte immer ein gültiger Pfad zu dem übergeordneten Ordner sein. Es wird auch etwas schneller als die Lösungen mit Pushd und Popd sein, aber das wird nicht die primäre Überlegung in einer Batch-Datei sein.

Bearbeiten: Beachten Sie, dass alle Lösungen bisher, einschließlich meiner hier, Probleme haben, wenn der aktuelle Ordner die Wurzel eines Laufwerks ist. Es gibt keinen sauberen und einfachen Ausweg, da wirklich kein Elternteil eines Laufwerks für den Benutzermodus sichtbar ist.

+1

Das ist eine andere Möglichkeit, es zu betrachten. Was Ihre Bearbeitung anbelangt, scheinen beide Wege keine Probleme zu haben, da die "aktuelle" Quelle die Wurzel eines Laufwerks ist. C: \ cd .. wird Sie nicht um eine Stufe höher bringen, sondern bleibt bei C: \ ohne zu bremsen, und technisch gesehen ist C: \ das übergeordnete Element von C: \, das ist cool. Will das nicht sowieso von root verwenden;) –

+0

Es ist nur eine Quelle für eine Diskontinuität, oder eine Schleife, die nicht zum Stillstand kommt, also dachte ich, es wäre erwähnenswert. – RBerteig

+0

Eine andere einfache Lösung, cool! –

Verwandte Themen