mapick
Goto Top

Per Robocopy automatisch Ordner erstellen.

Hallo Freunde,
ich brauche Hilfe um es mir einfacher zu machen 3000 Ordner per Robocopy zu erstellen.

Ich stecke mitten in einer Datenmigration und habe folgendes Problem:

Ich müsste per Robocopy einen s.g. "Masterordner" ca. 3000 mal erstellen damit innerhalb der Ordner die Berechtigungen immer gleich sind.

robocopy e:\Bibliothek\Allgemein\Komm\Muster_Kommordner e:\Bibliothek\Allgemein\Komm\20795-TAP /e /sec

Soweit kein Problem.
Jetzt wäre es schön eine Lösung zu finden um das ganze zu automatisieren.
D.h. Ich habe eine Textdatei in der alle zu erstellenden Ordnernamen drin stehen (s.o. 20795-TAP).
Wie kann ich es jetzt realisieren dass diese Ordner automatisch angelegt werden.

Für schnelle Hilfe wäre ich sehr, sehr dankbar.

Gruß
Mario

Content-ID: 142074

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

Ausgedruckt am: 25.11.2024 um 06:11 Uhr

77559
77559 04.05.2010 um 13:54:58 Uhr
Goto Top
Hallo Mario,

die Frage passt eigentlich besser in Batch & Shell.

Unter der Annahme das pro Zeile in "deineliste.txt" ein gültiger Ordnername vorliegt:

in einem CMD Fenster:
For /f  %A in (deineliste.txt) do @robocopy "e:\Bibliothek\Allgemein\Komm\Muster_Kommordner" "e:\Bibliothek\Allgemein\Komm\%A" /e /sec

In einer Batchdatei sind die %-Zeichen zu verdoppeln.

Der for /f Befehl liest die Date deineliste.txt Zeile für Zeile ein und führt jedesmal den robocopybefehl mit dem eingesetzten Ordnernamen "%A" aus.

Gruß
LotPings
MaPick
MaPick 04.05.2010 um 16:01:48 Uhr
Goto Top
Aber es funktioniert nicht.

For /f %%A in (C:\namen.txt) do robocopy "e:\Bibliothek\Allgemein\Komm\Muster_Kommordner"
"e:\Bibliothek\Allgemein\Komm\test\%%A" /e /sec
77559
77559 04.05.2010 um 16:30:19 Uhr
Goto Top
Zitat von @MaPick:
Aber es funktioniert nicht.
Bitte formatiere deine code zur besseren Les-/Referenzierbarkeit unbedingt mit den dafür vorgesehenen aus der Formatierungshilfe

Wenn die Ordnernamen in Namen.txt ggfs Leerzeichen enthalten oder andere Zeichensätze, ändere es so ab:
<code >
For /f "Delims=" %%A in ('More C:\namen.txt') do robocopy "e:\Bibliothek\Allgemein\Komm\Muster_Kommordner" "e:\Bibliothek\Allgemein\Komm\test\%%A" /e /sec

Ansonsten sollte es eigentlich klappen.

Gruß
Lotpings

PS: das muß alles in einer Zeile stehen!
MaPick
MaPick 04.05.2010 um 20:09:06 Uhr
Goto Top
Vielen Dank!
Jetzt läut es.
Aber es läift unendlich.
D.h. er fängt immer wieder von vorne an!
Was kann ich dagegen tun?
77559
77559 04.05.2010 um 20:22:56 Uhr
Goto Top
Zitat von @MaPick:
Aber es läift unendlich.
D.h. er fängt immer wieder von vorne an!
An der einen Zeile liegt das sicher nicht,
wie sieht denn dein Batch genau aus und unter welchem Namen hast du gespeichert?

Was kann ich dagegen tun?
Wenn du sicher bist das er immer wieder neu startet - abbrechen?

Gruß
LotPings
MaPick
MaPick 04.05.2010 um 20:34:43 Uhr
Goto Top
Habe ja auch nicht gemeint das es an Zeile liegt.
Die Batch beinhaltet nur diese Zeile, ist als Ordner.bat angespeichert und wird auf einem Server 2008 R2 vom Administrator ausgeführt.
Aber was hat damit zu tun?

Klar kann ich den Lauf einfach abrechen.
Ist aber nicht wirklich eine saubere Lösung, oder.
77559
77559 04.05.2010 um 21:16:19 Uhr
Goto Top
Zitat von @MaPick:
Habe ja auch nicht gemeint das es an Zeile liegt.
Aber die Verpackung der Zeile kann wichtig sein.

Die Batch beinhaltet nur diese Zeile, ist als Ordner.bat angespeichert und wird auf einem Server 2008 R2 vom Administrator ausgeführt.
Aber was hat damit zu tun?
Naja wenn du die Datei z.Bsp. Robocopy genannt hättest, wäre das, da robocopy in der Barch ohne Erweiterung angesprochen wird, eine mögliche Erklärung gewesen.

Klar kann ich den Lauf einfach abrechen.
Ist aber nicht wirklich eine saubere Lösung, oder.
Nein, aber wir suchen ja noch.

Sind die Ordner denn angelegt worden?
Bei 3000 Ordneren wird robocopy auch 3000 mal aufgerufen.

Gruß
LotPings
MaPick
MaPick 04.05.2010 um 21:21:22 Uhr
Goto Top
Habe zum testen nur 40 Namen in der Textdatei.
Die sind auch da. Aber der Job läuft und läuft und läuft face-wink
Biber
Biber 04.05.2010 um 22:00:17 Uhr
Goto Top
Moin MaPick,

Zitat von @MaPick:
Habe zum testen nur 40 Namen in der Textdatei.
Die sind auch da. Aber der Job läuft und läuft und läuft face-wink
Warum? Dann brich ihn doch ab. Oder warten wir noch ein Stündchen, ob da tatsächlich etwas falsch läuft?

Bitte lass uns mit dieser ver###ten einen Zeile doch die ersten zwei Schritte machen:

[Jetzt-Stand]
For /f "Delims=" %%A in ('More C:\namen.txt') do robocopy "e:\Bibliothek\Allgemein\Komm\Muster_Kommordner"  "e:\Bibliothek\Allgemein\Komm\test\%%A" /e /sec  

[Proof-of-Concept]
For /f "Delims=" %%A in ('More C:\namen.txt') do (  
        @echo robocopy "e:\Bibliothek\Allgemein\Komm\Muster_Kommordner"  "e:\Bibliothek\Allgemein\Komm\test\%%A" /e /sec  
)
Echo Ende von Batch %0

Falls der NICHT endlos läuft UND sinnvolle Ausgabe produziert:
[Proof-of-Concept II]
For /f "Delims=" %%A in ('More.com C:\namen.txt') do (  
        @robocopy.exe "e:\Bibliothek\Allgemein\Komm\Muster_Kommordner"  "e:\Bibliothek\Allgemein\Komm\test\%%A" /e /sec  
)
Echo Ende von Batch %0

Danach schauen wir weiter,

Grüße
Biber
77559
77559 04.05.2010 um 22:04:59 Uhr
Goto Top
Zitat von @MaPick:
Habe zum testen nur 40 Namen in der Textdatei.
Die sind auch da. Aber der Job läuft und läuft und läuft face-wink

Ok, dann brauchen wir halt mehr checks

@Echo off
For /f "tokens=1* Delims=:" %%A in ('findstr /V /N "###" C:\namen.txt' ') do Call :robocop %%A "%%B"  
Echo Done
goto :eof
:robocop
echo %1:%~2
if exist "e:\Bibliothek\Allgemein\Komm\test\%%A" goto :Eof  
robocopy "e:\Bibliothek\Allgemein\Komm\Muster_Kommordner"  "e:\Bibliothek\Allgemein\Komm\test\%%A" /e /sec  
if %errorlevel% EQU 0 goto :Eof
Echo %1:Errorlevel %Errorlevel% bei %2
goto :Eof

Only braintested nach 2 Gläsern Rotwein face-wink tokens=1* fehlte noch

Gruß
LotPings