manicpumpkin
Goto Top

Erstellen eines Verzeichnisses in allen Unterverzeichnissen

Ich versuche eine Batchdatei zu schreiben, welche in allen Unterverzeichnissen, in der dir Batchdatei liegt, ein Verzeichnis zu erstellen. Jedoch habe ich hierbei ein Problem!

Ich habe folgenden Code schon entwickelt:

@ECHO OFF
REM --------------------------------------------------------------------------
REM Changeable values
REM --------------------------------------------------------------------------
SET CREATE=SRC
SET SRC=\SRC\
REM --------------------------------------------------------------------------
REM Don't change this values  
REM --------------------------------------------------------------------------
SET OLDDIR=%CD%
SET DEST=%OLDDIR%%SRC%
REM --------------------------------------------------------------------------
FOR /F %%i IN ('DIR /AD /B "%DEST%"') DO (  
	ECHO 	+ Check folder %%i

	SET "NEWDIR=%DEST%%%i"  
	SET "CREATEDIR=%DEST%%i\%CREATE%"  

	IF EXIST "%DEST%%i\%CREATE%" (  
		ECHO 		+ %CREATE%-Folder exists
		ECHO 		+ No creation needed
	) ELSE (
		ECHO 		+ %CREATE%-Folder does not exist
		ECHO 		+ Create %CREATE%-Folder
		CD %NEWDIR%
		MKDIR %CREATE%
		CD %OLDDIR%
		ECHO 		+ Done
	)
	ECHO.
) 

Weiterhin habe ich folgende Ordnerstruktur:
--- Currentdir
 ˫ /SRC
   ˫ /a
   ˫ /b
   ˪ /c
      ˪ /src
 
 ˪ execute.bat

Ich bekomme jedoch die Meldung das in keinem der Ordner schon der Ordner ensteht. Folgenden Output bekomme ich:
        + Check folder a
                + SRC-Folder does not exist
                + Create SRC-Folder
Ein Unterverzeichnis oder eine Datei mit dem Namen "SRC" existiert bereits.  
                + Done

        + Check folder b
                + SRC-Folder does not exist
                + Create SRC-Folder
Ein Unterverzeichnis oder eine Datei mit dem Namen "SRC" existiert bereits.  
                + Done

        + Check folder c
                + SRC-Folder does not exist
                + Create SRC-Folder
Ein Unterverzeichnis oder eine Datei mit dem Namen "SRC" existiert bereits.  
                + Done

Wenn ich mir mit jeder Iteration die Variable NEWDIR ausgeben lasse, dann bekomme ich immer diese Meldung:
<Ordnerhierarchie>\SRC\c

Weiß jemand Rat ?
Ich bin ehrlich gesagt überfragt, warum der Ordnername erst richtig ausgegeben wird und nach der Verarbeitung mit SET immer der Ordner "c" genutzt wird.

Beste Grüße und Danke,
Manic.

Content-Key: 167473

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

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

Member: bastla
bastla Jun 04, 2011, updated at Oct 18, 2012 at 16:47:07 (UTC)
Goto Top
Hallo ManicPumpkin und willkommen im Forum!

Das Stichwort zu Deinem Code wäre "delayedExpansion" - siehe dazu auch Friemlers Tutorial zur FOR-Schleife ...

- aber falls ich das richtig verstehe und Du tatsächlich nur erreichen willst, dass es in jedem Unterverzeichnis des aktuellen Verzeichnisses ein Verzeichnis "SRC" geben soll, würde
for /d %%i in (*.*) do md "%%i\SRC" 2^>nul
genügen ...

Wenn Du gesteigerten Wert auf die Prüfung, ob das Verzeichnis bereits vorhanden ist, legst, dann eben:
for /d %%i in (*.*) do (
    if exist "%%i\SRC" (  
        echo Gibt's schon  
    ) else (
        echo Wird in %%i erstellt
        rem oder auch: Wird in %%~nxi erstellt
        md "%%i\SRC"  
    )
)
Natürlich ist das, wie Du es ja schon vorhattest, mit einer Variablen für "SRC" etwas "schöner" und wartungsfreundlicher ...

So oder so ist die "Herumhüpferei" mit "CD" aber unnötig.

Grüße
bastla
Member: ManicPumpkin
ManicPumpkin Jun 05, 2011 at 09:22:00 (UTC)
Goto Top
Hallo bastla,

ich danke dir für die Information.
Da hätte ich im Endeffekt ewig gesucht, ehe ich das gefunden hätte. ;)
Jetzt funktioniert es, mittels DelayedExpansion!

Die Geschichte mit dem CD herumhüpfen habe ich auch weggelassen, da ich mir ja sowieso schon alle nötigen Variablen zuvor zusammen gebastelt hatte und im Endeffekt nur mittels MKDIR den Ordner erstellen brauchte. ;)

Was mich jetzt noch einmal interessieren würde ist folgendes:
Was bedeutet denn "%%~nxi" ?

Beste Grüße,
Manic.
Member: TsukiSan
TsukiSan Jun 05, 2011 at 14:29:07 (UTC)
Goto Top
hallo ManicPumpkin,

Was bedeutet denn "%%~nxi" ?
Ein bisschen Dr.Google ergibt dies:
Das ist zwar in englisch, aber beschreibt es sehr einfach.

Gruss
Tsuki
Member: ManicPumpkin
ManicPumpkin Jun 05, 2011 at 14:44:46 (UTC)
Goto Top
Hallo Tsuki!

Ich habe es gefunden. ;)
Ich danke dir!

Liebe Grüße,
Manic.
Member: Skyemugen
Skyemugen Jun 05, 2011 at 15:39:06 (UTC)
Goto Top
Zitat von @TsukiSan:
Ein bisschen Dr.Google ergibt dies:
Das ist zwar in englisch, aber beschreibt es sehr einfach.

Aloha TsukiSan,

... ein bisschen for /? + runterscrollen hätte es doch auch getan, oder nicht? face-wink

greetz André