Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 2842 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
Batch & Shell
Batchdatei auch in den Unterverzeichnissen anwenden (7)

Frage von joejoesto zum Thema Batch & Shell ...

Batch & Shell
Batch - alle unterverzeichnisse miteinbeziehen (5)

Frage von mksadm zum Thema Batch & Shell ...

Batch & Shell
gelöst For Schleife für Abgleich mit Text-Datei und Unterverzeichnisse (4)

Frage von grisur zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Installation

Unorthodoxer Weg, um an einen Offline-Installer für Adobe Flash zu kommen

(6)

Tipp von beidermachtvongreyscull zum Thema Windows Installation ...

Datenschutz

Gefährdeter Datenschutz: Firefox löscht lokale Datenbanken nicht

Information von BassFishFox zum Thema Datenschutz ...

Firewall

PfSense OpenVPN beschleunigen

Tipp von Dobby zum Thema Firewall ...

Utilities

CCleaner 5.33 mit Malware infiziert

(25)

Information von SeaStorm zum Thema Utilities ...

Heiß diskutierte Inhalte
Utilities
CCleaner 5.33 mit Malware infiziert (25)

Information von SeaStorm zum Thema Utilities ...

Festplatten, SSD, Raid
gelöst Problem mit DELL 815R Server und Windows Bluescreen (24)

Frage von Leo-le zum Thema Festplatten, SSD, Raid ...

Windows Netzwerk
Dateien mit Intelligenz per GPO ins Programmverzeichnis (14)

Frage von erwin.t zum Thema Windows Netzwerk ...

JavaScript
gelöst Kopierschutz auf Webseite (13)

Frage von honeybee zum Thema JavaScript ...