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, 2833 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 ..
Ähnliche Inhalte
Windows Update
Wsusscn2.cab von lokalem WSUS erstellen? (1)

Frage von Coppelius zum Thema Windows Update ...

Windows Server
Win2016 - Failovercluster erstellen (4)

Frage von emeriks zum Thema Windows Server ...

Windows Server
gelöst Windows Server 2016 DFS Namespace erstellen auf verschlüsselter Festplatte (6)

Frage von suB2010 zum Thema Windows Server ...

Windows Netzwerk
Domäne neu, Gruppenrichtlinien erstellen: das Rad neu erfinden? (5)

Frage von Dude-from-R00t zum Thema Windows Netzwerk ...

Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(6)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(40)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Windows 10
gelöst Windows 10 Home "Netzlaufwerk nicht bereit" (19)

Frage von Oggy01 zum Thema Windows 10 ...

Exchange Server
gelöst RU 17 Exchange 2010 . Erfahrungen? (10)

Frage von keine-ahnung zum Thema Exchange Server ...

Datenbanken
gelöst MySQL Zeiterfassungs-Problematik (wer ist eingecheckt) (9)

Frage von NativeMode zum Thema Datenbanken ...

Windows Server
Festplatten Ruhezustand Windows Server 2016 (8)

Frage von ahaeuser zum Thema Windows Server ...