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-Key: 147708

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

Printed on: April 25, 2024 at 00:04 o'clock

Member: Snowman25
Snowman25 Jul 27, 2010 at 07:44:04 (UTC)
Goto Top
Halloo @gilldex,

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

Gruß
Snow
Member: gilldex
gilldex Jul 27, 2010 at 11:32:37 (UTC)
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.
Member: bastla
bastla Jul 27, 2010 at 12:18:14 (UTC)
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
Member: gilldex
gilldex Jul 28, 2010 at 06:31:39 (UTC)
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.