Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Erstellen eines Verzeichnisses in allen Unterverzeichnissen

Frage Entwicklung Batch & Shell

Mitglied: ManicPumpkin

ManicPumpkin (Level 1) - Jetzt verbinden

05.06.2011, aktualisiert 18.10.2012, 2826 Aufrufe, 5 Kommentare

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:

01.
@ECHO OFF 
02.
REM -------------------------------------------------------------------------- 
03.
REM Changeable values 
04.
REM -------------------------------------------------------------------------- 
05.
SET CREATE=SRC 
06.
SET SRC=\SRC\ 
07.
REM -------------------------------------------------------------------------- 
08.
REM Don't change this values 
09.
REM -------------------------------------------------------------------------- 
10.
SET OLDDIR=%CD% 
11.
SET DEST=%OLDDIR%%SRC% 
12.
REM -------------------------------------------------------------------------- 
13.
FOR /F %%i IN ('DIR /AD /B "%DEST%"') DO ( 
14.
	ECHO 	+ Check folder %%i 
15.
 
16.
	SET "NEWDIR=%DEST%%%i" 
17.
	SET "CREATEDIR=%DEST%%i\%CREATE%" 
18.
 
19.
	IF EXIST "%DEST%%i\%CREATE%" ( 
20.
		ECHO 		+ %CREATE%-Folder exists 
21.
		ECHO 		+ No creation needed 
22.
	) ELSE ( 
23.
		ECHO 		+ %CREATE%-Folder does not exist 
24.
		ECHO 		+ Create %CREATE%-Folder 
25.
		CD %NEWDIR% 
26.
		MKDIR %CREATE% 
27.
		CD %OLDDIR% 
28.
		ECHO 		+ Done 
29.
30.
	ECHO. 
31.
) 
Weiterhin habe ich folgende Ordnerstruktur:
01.
--- Currentdir 
02.
 ˫ /SRC 
03.
   ˫ /a 
04.
   ˫ /b 
05.
   ˪ /c 
06.
      ˪ /src 
07.
  
08.
 ˪ execute.bat
Ich bekomme jedoch die Meldung das in keinem der Ordner schon der Ordner ensteht. Folgenden Output bekomme ich:
01.
        + Check folder a 
02.
                + SRC-Folder does not exist 
03.
                + Create SRC-Folder 
04.
Ein Unterverzeichnis oder eine Datei mit dem Namen "SRC" existiert bereits. 
05.
                + Done 
06.
 
07.
        + Check folder b 
08.
                + SRC-Folder does not exist 
09.
                + Create SRC-Folder 
10.
Ein Unterverzeichnis oder eine Datei mit dem Namen "SRC" existiert bereits. 
11.
                + Done 
12.
 
13.
        + Check folder c 
14.
                + SRC-Folder does not exist 
15.
                + Create SRC-Folder 
16.
Ein Unterverzeichnis oder eine Datei mit dem Namen "SRC" existiert bereits. 
17.
                + Done
Wenn ich mir mit jeder Iteration die Variable NEWDIR ausgeben lasse, dann bekomme ich immer diese Meldung:
01.
<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.
Mitglied: bastla
05.06.2011, aktualisiert 18.10.2012
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:
01.
for /d %%i in (*.*) do ( 
02.
    if exist "%%i\SRC" ( 
03.
        echo Gibt's schon 
04.
    ) else ( 
05.
        echo Wird in %%i erstellt 
06.
        rem oder auch: Wird in %%~nxi erstellt 
07.
        md "%%i\SRC" 
08.
09.
)
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
Bitte warten ..
Mitglied: ManicPumpkin
05.06.2011 um 11:22 Uhr
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.
Bitte warten ..
Mitglied: TsukiSan
05.06.2011 um 16:29 Uhr
hallo ManicPumpkin,

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

Gruss
Tsuki
Bitte warten ..
Mitglied: ManicPumpkin
05.06.2011 um 16:44 Uhr
Hallo Tsuki!

Ich habe es gefunden. ;)
Ich danke dir!

Liebe Grüße,
Manic.
Bitte warten ..
Mitglied: Skyemugen
05.06.2011 um 17:39 Uhr
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?

greetz André
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Batch & Shell
gelöst Programm in allen Unterverzeichnissen ausführen (8)

Frage von Rotnasenkater zum Thema Batch & Shell ...

RedHat, CentOS, Fedora
gelöst Erstellen von Desktopverknüpfungen und Anpassung der Taskleiste (2)

Frage von honeybee zum Thema RedHat, CentOS, Fedora ...

Vmware
ESXI Template erstellen (2)

Frage von Phill93 zum Thema Vmware ...

Batch & Shell
Ordner erstellen ll Datei hinein kopieren (1)

Frage von heyalice zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...