zeroblue2005
Goto Top

Kleine Nchhilfe bei einer for Schleife für eine Batch. Unterordner werden nicht durchsucht

Hallo Zusammen,

möchte gerne dass diese kleine Batch, ein Verzeichnis durchsucht, egal bis zu welcher Ordnertiefe und alle Dateien ohne Ordner via xcopy kopiert zu einem Ziel-Pfad. Das klappt auch so weit, jedoch nur bis zu ersten Ordnertiefe, also z.B. C:\Test\1\ wenn es jedoch z.B. C:\Test\1\2\ gibt, werden die Dateien in 2 nicht gefunden, wo liegt mein Fehler?

for /r "C:\Test" %%a in (*.*) do xcopy /y /m /c %%a "D:\Backup"  

Danke für den Hinweis face-smile

Content-Key: 395825

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

Ausgedruckt am: 19.03.2024 um 07:03 Uhr

Mitglied: zeroblue2005
zeroblue2005 15.12.2018 um 22:37:48 Uhr
Goto Top
ok... nach Stunden suchen u. basteln, selbst gelöst:

@echo off & setlocal
set "Dateifilter=*.*"  
set "Quelle=D:\Documents\test"  
set "Ziel=C:\Backup-TMP"  
for /f "delims=" %%a in ('dir /s /b /a-d "%Quelle%\%Dateifilter%"') do @(  
  xcopy "%%a" "%Ziel%" /m /y /c  
)
Mitglied: rubberman
rubberman 16.12.2018 um 13:51:21 Uhr
Goto Top
Pro-Tipp: Schau dir doch mal die Optionen von XCOPY an, insbesondere /S. Der Sinn deiner Schleife leuchtet zumindest mir nicht ein. Und ein ROBOCOPY hätten wir übrigens auch, das (bei einem Backup interessant) auch dafür sorgt, dass Fehler beim Kopieren gefunden und ggf. durch eine einstellbare Anzahl an erneuten Kopierversuchen ausmerzt. Das ganze auch noch multithreaded, was bei größeren Datenmengen zur Verkürzung der Prozesszeiten führen kann (kommt auf die Hardware an).

Steffen
Mitglied: zeroblue2005
zeroblue2005 16.12.2018 um 14:56:52 Uhr
Goto Top
Hallo Rubberman,

ich muss zugeben, dass ich das meiste aus einem anderen Script habe. Lediglich Xcopy Zeile und die Variabelen bei Set habe ich angepasst. Die in der Schleife enthalten Paramater /S und /B oder /A-D blicke ich auch nicht ganz durch.

Für mich war jetzt nur das Ziel wichtig und das wurde erreicht! Steht /S nicht rekusiv durchsuchen?

Wenn du was zu verbessern hast, an der Schleife dann immer raus damit.

Ich habe es jetzt icht ausprobiert, aber würde robocopy "%%a" "%Ziel%" /m /y /c auch laufen?
Mitglied: rubberman
rubberman 16.12.2018 um 15:34:53 Uhr
Goto Top
Wenn du was zu verbessern hast, an der Schleife dann immer raus damit.
Nein, das war nicht was ich geschrieben habe. Die Kernaussage/-frage war, warum überhaupt eine Schleife, wenn XCOPY bereits eine Option hat um rekursiv zu kopieren? Hast du dir die Hilfe zu XCOPY mal angesehen und gelesen was zu Option /S steht? Ich rede nicht vom DIR Command. Das würde sich komplett erübrigen.

Steffen
Mitglied: zeroblue2005
zeroblue2005 17.12.2018 um 07:46:39 Uhr
Goto Top
Hallo Steffen,

ja jetzt verstehe ich, danke! Das war ja genau mein Ursprungsproblem! Das /r sollte ja eigentlich reichen, aber aus irgendeinem Grund geht er eben nicht in die Tiefe...

for /r "C:\Test" %%a in (*.*) do xcopy /y /m /c %%a "D:\Backup"  

Dann habe ich mich auf die Suche gemacht und bin eben bei jemanden anderen über das gleiche Problem gestossen und seine Lösung war die Schleife. Mit Robocopy ist dies das gleiche Problem!

Der Grund warum das ohne die for Schleife geht und ohne nicht, kann ich eben nicht nachvollziehen!