Kopieren mehrerer Ordner in mehrere Verzeichnisse

Guten Morgen an alle,

ich habe ein kleines Problem.

Auf meinem PC befinden sich zwei Ordner (nennen wir sie einfach mal c:\1\ und c:\2\ )

In Ordner Nummer1 befinden sich ca. 300 Unterordner (alle leer).
In Ordner Nummer2 befinden sich weitere 4 Unterordner (alle leer).

Ich suche nun nach einer Möglichkeit diese 4 in all die 300 Unterordner zu kopieren. Copy Paste ist leider zu aufwändig da ich dies in den nächsten Tagen noch öfters tun müsste.

Ich habe es mit einer Batchdatei probiert (nicht lachen habs nie gelernt ;D)

FOR /R c:\1\ %%d IN (.) DO xcopy c:\2\ %%d /t /e

leider spuckt er dauerhaft die Fehlermeldungen:

c:\>xcopy c:\2\ c:\1\Unterordner1. /t /e
Unzulässige Parameteranzahl

und

c:\>xcopy c:\2\ c:\1\Unterordner2. /t /e
Ungültiger Pfad

Warum er zwei verschiedene Fehlermeldungen ausgibt ist mir unklar. :-/. Eigentlich sind die Ordner komplett identisch.

Ich nehme an mein (Satz) ist falsch da er immer wieder versucht die Ordner in c:\1\Unterordner. zu kopieren. Mit anderen Platzhaltern (*.*) oder (…) komm ich auch nicht arg viel weiter :-/.

Kann mir irgendjemand sagen wo ich meinen Fehler hab?

Oder kennt jemand ein FreewareProgramm welches diese Funktion besitzt?

mfg
LeRoy Hill

okay bisschen vorschnell gewesen.

Unzulässiger Parameter entsteht wenn in den Ordnernamen Leerstellen vorhanden sind.

Bräuchte auch eine Lösung hierfür.

hallo

du hast gleich mehrere probleme:

  1. das mit den leerzeichen bekommst du in den griff, in dem du die verzeichnisnamen in hochkomma stellst

  2. der backslash nach xcopy c:\2\ ist zuviel

  3. du rennst da in eine endlosschleife rein, die versucht, unendlich viele ordner anzulegen - solange, bis windows an die obergrenze für den max. möglichen pfadnamen reinrennt. dann bricht windows mit der meldung „ungültiger pfadname“ ab.

vermutlich ist problem 3 dein schwerwiegendstes!!!

abhilfe schafft nur, dass du dir die verzeichnisse zuerst in eine datei schreibst (z.b. mit dir /AD /B /S > dir.txt) und diese datei dann abarbeitest (also mit for /F %i in (dir.txt) do xcopy …). die datei kannst du danach ja wieder löschen.

lg erwin

Erstmal Danke aber…

  1. das mit den leerzeichen bekommst du in den griff, in dem du
    die verzeichnisnamen in hochkomma stellst

funktioniert. herzlichen dank

  1. der backslash nach xcopy c:\2\ ist zuviel

auch geändert. danke.

  1. du rennst da in eine endlosschleife rein, die versucht,
    unendlich viele ordner anzulegen - solange, bis windows an die
    obergrenze für den max. möglichen pfadnamen reinrennt. dann
    bricht windows mit der meldung „ungültiger pfadname“ ab.

naja fast ;D er meckert er hätte nicht genug Arbeitsspeicher ^^

abhilfe schafft nur, dass du dir die verzeichnisse zuerst in
eine datei schreibst (z.b. mit dir /AD /B /S > dir.txt) und
diese datei dann abarbeitest (also mit for /F %i in (dir.txt)
do xcopy …). die datei kannst du danach ja wieder löschen.

also ich hab jetzt mal diese zwei Zeilen einfach in die Batchdatei eingefügt.

dir c:\1 /AD /B /S > dir.txt
FOR /R c:\1\ %%i IN (dir.txt) DO xcopy c:\2 „%%i“ /t /e
del dir.txt

so sieht es jetzt aus.

Also die Textdatei bastelt er ohne zu meckern (auch schon ausserhalb der Batchdatei mit Erfolg ausprobiert).

Doch dann geht es los. Aus irgendeinem Grund versucht er wohl die dir.txt zu kopieren.

C:\>xcopy c:\2 „c:\1\dir.txt“ /t /e
Ist das Ziel C:\1\dir.txt ein Dateiname oder ein Verzeichnisname(D = Datei, V = Verzeichnis)?

Gebe ich wahrheitsgemäß D ein springt er einfach ins erste Unterverzeichnis und die gleiche Frage kommt wieder.

C:\>xcopy c:\2 „c:\1\unterordner\dir.txt“ /t /e
Ist das Ziel C:\1\unterordner\dir.txt ein Dateiname oder ein Verzeichnisname(D = Datei, V = Verzeichnis)?

Bei D springt er in den nächsten Unterordner und so weiter und so fort.

Gebe ich an dass es ein Verzeichnis ist erstellt er ein Verzeichnis namens dir.txt springt gleich rein und die gleiche Frage kommt wieder nur diesmal halt in diesem dir.txt Ordner.

Also:

C:\>xcopy c:\2 „c:\1\unterordner\dir.txt\dir.txt“ /t /e
Ist das Ziel C:\1\unterordner\dir.txt\dir.txt ein Dateiname oder ein Verzeichnisname(D = Datei, V = Verzeichnis)?

naja wohl wieder eine Endlosschleife (mein armer PC vergebe mir).

gebe ich an das es Dateien sind (was ich wohl oder übel tun muss wenn ich aus der Batchdatei wieder rauswill da strg+c nicht funktioniert) hüpft er durch die einzelnen Unterordner und macht gar nix.

Achso dir.txt wird danach ordnungsgemäß wieder entfernt. Wenigstens ein Erfolg heute :-/.

hallo

du musst mein posting schon genau lesen:

for /F %i in (dir.txt)…

also F wie in file und nicht R wie in rekursive!!!

dann klappts

erwin

okay wer lesen kann ist klar im Vorteil. *sich an den Kopf fass*

klappt… fast…

hab jetzt immer noch ein Problem mit den Ordnern mit Leerstellen.

Nehmen wir an ich habe einen Unterordner namens

Himmlischer Frieden

dann erstellt mir die Batchdatei einen neuen Ordner namens Himmlischer

ich hoff ich hab diesmal aufmerksam genug gelesen und du hast dies nicht schon vorher beantwortet. das %%i im xcopy steht in „“

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

FOR /F %%d IN (dir.txt) DO xcopy „c:\2“ „%%d“ /t /e

das klappt nicht?

erwin

FOR /F %%d IN (dir.txt) DO xcopy „c:\2“ „%%d“ /t /e

das klappt nicht?

erwin

bei dieser Zeile:

FOR /F %%d IN (dir.txt) DO xcopy „c:\2“ „%%d“ /t /e

meckert er ungültige Pfadangabe

ich nehm an du hast es so gemeint:

FOR /F %%d IN (dir.txt) DO xcopy „c:\2“ „%%d“ /t /e

aber leider macht er trotzdem aus Himmlischer Frieden einen Ordner namens Himmlischer. Ich verzweifle langsam. :-/

also genaugenommen geht es so:

FOR /F „delims==“ %%d IN (dir.txt) DO xcopy „c:\2“ „%%d“ /t /e

das „delims==“ brauchst du auf jeden fall, da der for-befehl sonst die leerzeichen in der dir.txt als trennzeichen interpretiert. mit delims== legst du fest, dass du keine trennzeichen haben willst. dann sind leerzeichen auch keine probleme.

ach ja, zum debuggen bietet sich ein
FOR /F „delims==“ %%d IN (dir.txt) DO echo xcopy „c:\2“ „%%d“ /t /e
an - dann siehst du, was windows da treiben will.

lg
erwin

oh man. hab grad die lösung auf nem anderen board erhalten und wollte sie hier veröffentlichen. aber du warst ja schneller.

vielen dank. du hast mir sehr geholfen.

Code sieht nun so aus und funktioniert einbahnfrei

FOR /F „delims=“ %%d IN (‚DIR /B /AD „C:\1“‘) DO (XCOPY „C:\2“ „C:\1%%d“ /T /E)

Ich starte batch dateien generell über die MS-Doseingabeaufforderung, Will ja sehen was die da tun ^^.

Nochmals vielen Dank, wenn ich wüsste wie man Sterne vergeben kann (ich glaub aber dies darf ich noch nicht einmal) würdest einen bekommen :wink:. Sobald ich aber rausbekomm wie es funktioniert (und es auch darf) bekommst einen.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]