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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 142074
Url: https://administrator.de/contentid/142074
Ausgedruckt am: 25.11.2024 um 06:11 Uhr
10 Kommentare
Neuester Kommentar
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:
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
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
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!
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!
An der einen Zeile liegt das sicher nicht,
wie sieht denn dein Batch genau aus und unter welchem Namen hast du gespeichert?
Gruß
LotPings
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
Aber die Verpackung der Zeile kann wichtig sein.
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
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.Aber was hat damit zu tun?
Klar kann ich den Lauf einfach abrechen.
Ist aber nicht wirklich eine saubere Lösung, oder.
Sind die Ordner denn angelegt worden?
Bei 3000 Ordneren wird robocopy auch 3000 mal aufgerufen.
Gruß
LotPings
Moin MaPick,
Bitte lass uns mit dieser ver###ten einen Zeile doch die ersten zwei Schritte machen:
[Jetzt-Stand]
[Proof-of-Concept]
Falls der NICHT endlos läuft UND sinnvolle Ausgabe produziert:
[Proof-of-Concept II]
Danach schauen wir weiter,
Grüße
Biber
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
Warum? Dann brich ihn doch ab. Oder warten wir noch ein Stündchen, ob da tatsächlich etwas falsch läuft?Habe zum testen nur 40 Namen in der Textdatei.
Die sind auch da. Aber der Job läuft und läuft und 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
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
Habe zum testen nur 40 Namen in der Textdatei.
Die sind auch da. Aber der Job läuft und läuft und läuft
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 tokens=1* fehlte noch
Gruß
LotPings