gilldex
Goto Top

Übergeordneter Ordner als Variabel

Hallo zusammen,

ich habe folgendes Problem zu bewältigen:
Ich möchte einen Ordner, welchen ich vorher als Variabel %bkp_dir% gespeichert habe innerhalb des Ordners "C:\test\" rekursiv suchen lassen.
Anschliessend soll mir der Pfad in welchem dieser Ordner liegt als Variabel gespeichert werden. Ich habe da bereits etwas angefangen, habe aber Probleme nur den übergeordneten Ordner als Variabel zu bekommen.

Folgende Zeile habe ich bis jetzt.:
FOR /F "delims=" %%G IN ('dir "C:\test\" /b /ad /s^|find /i "%bkp_dir%"') DO SET working_dir=%%G

Dieser Code gibt mir aber immer den ganzen Pfad zum Ordner aus, etwa so:
C:\test\sicherung\20100725

Ich möchte aber dass er mir nur anzeigt, in welchem Ordner der Ordner %bkp_dir% gefunden wurde, hier also:
sicherung

Falls das nicht gehen sollte würde mir auch schon reichen, wenn er mir den ganzen Pfad angibt, in welchem der Ordner liegt:
C:\test\sicherung\

Das habe ich auch hinbekommen, indem ich die Variabel einfach um die 8 Zeichen kürze, welche den Ordnernamen ausmachen. Aber falls der Ordnername einmal mehr als 8 Zeichen beinhaltet bekomme ich so natürlich Probleme.

Vielen Dank für eure Hilfe!

Content-ID: 147708

Url: https://administrator.de/contentid/147708

Ausgedruckt am: 26.11.2024 um 08:11 Uhr

Snowman25
Snowman25 27.07.2010 um 09:44:04 Uhr
Goto Top
Halloo @gilldex,

Hast du dir schonmal überlegt, mit PUSHD und POPD zu arbeiten?

Gruß
Snow
gilldex
gilldex 27.07.2010 um 13:32:37 Uhr
Goto Top
Danke für deine Antwort, aber leider weiss ich nicht wie ich deinen Tipp nutzen soll/kann. Mir ist die Funktion von PUSHD und POPD zwar klar, aber nicht im Zusammenhang mit meinem Problem.

Für einen kleinen Denkanstoss wäre ich daher durchaus dankbar.
bastla
bastla 27.07.2010 um 14:18:14 Uhr
Goto Top
Hallo gilldex!

Da Du ja vermutlich auch nach kompletten Ordnernamen und nicht nur nach Fragmenten (welche durch "find" ja schließlich gefunden würden) suchen willst, etwa so:
set "working_dir="  
FOR /F "delims=" %%G IN ('dir "C:\test\%bkp_dir%" /s /b /ad 2^>nul') DO SET "working_dir=%%G" & set "Parent_dir=%%~dpG"  
if not defined working_dir echo Nicht gefunden! & goto :eof
for %%i in ("%Parent_dir:~,-1%") do set "Parent_dir_name=%%~nxi"  
Grüße
bastla
gilldex
gilldex 28.07.2010 um 08:31:39 Uhr
Goto Top
Vielen Dank bastla.

Es hat alles wunderbar geklappt.
Es gibt halt doch noch so einiges was man dazu lernen kann, wie ich an deiner Lösung erkennen musste.