Top-Themen

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, 2846 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
Bei freigegebene Verzeichnisse in C:temp und Unterverzeichnisse Freigabe löschen
gelöst Frage von wk3963Batch & Shell3 Kommentare

Hallo, Aus Sicherheitsgründen soll ich bei WIN7 Rechnern alle Freigaben in C:\Temp und in Unterverzeichnissen schließen. Ich muss das ...

Batch & Shell
Vor dem Verzeichniss erstellen überprüfen ob Ordner vorhanden sind
Frage von TommylikBatch & Shell12 Kommentare

Hallo, Ich habe mir folgendes geschrieben: Funktioniert ohne Probleme. Es wird immer das Laufwerk D genutzt. Könnte mir einer ...

Batch & Shell
Namensvergleich von Unterverzeichnisse
gelöst Frage von BlattlausOGBatch & Shell20 Kommentare

Hallo allerseits, ich bin neu in diesem Forum und möchte an erster Stelle alle recht herzlich Grüßen :) Ein ...

Windows 7
Verzeichnisse per Script erstellen und Dateien dort hinkopieren
gelöst Frage von peter58haWindows 72 Kommentare

Hallo zusammen! Ich kenne mich mit einfachen BATCH-Dateien aus, aber mit WSH oh - gar nicht! Folgendes möchte ich ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Necur-Botnet soll Erpressungstrojaner Scarab massenhaft verbreiten

Information von BassFishFox vor 2 StundenErkennung und -Abwehr

12,5 Millionen Spam-Mails aus einem Bot-Netz mit 6 Millionen Computern? Eigentlich eine schwache Leistung. Die Erpresser setzen dabei auf ...

Microsoft

Nadeldrucker-Problem unter Windows - Microsoft liefert Updates

Information von BassFishFox vor 2 StundenMicrosoft

Hat ja nicht lange gedauert. Nachdem die November-Updates für Windows 7, 8.1 und 10 zahlreiche Nadeldrucker lahmgelegt hatten, stellt ...

Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 10 StundenLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Heiß diskutierte Inhalte
Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Windows Server
Kann man im KMS nachschauen , wieviele Clients den Key in Anspruch genommen haben
gelöst Frage von rainergugusWindows Server12 Kommentare

Hallo, wir haben einen KMS Windows 10 Key. Dieser ist ja W7 kompatibel. Aber unser Windows 7 Pool registriert ...