patrick-w
Goto Top

Dateien per Batch kopieren aus verschiedenen Unterverzeichnissen

Hallo,

meine Erfahrung mit Batch Dateien ist weniger als minimal und liegt sehr lange zurück.
Daher brauche ich eure hilfe.

Folgende Situation besteht:

Ordner1 hat undefinierbar (kann sich immer ändern) viele Unterorderner. In diesen Unterordnern sind verschiedene Dateien.
Diese Dateien sollen in den Ordner2 kopiert werden.

Ich muss das nun ja am besten mit einer Schleife lösen, die immer schaut wie viele Unterordner es gibt und dann in jeden Unterordner reinschaut, welche Daten drin sind, und diese dann kopiert. Leider bekomme ich dies absolut nicht hin.

Kann mir einer dabei helfen? am besten mit kurzer Erklärung dabei, was wo in der Batch passiert.

Besten Dank für eure Hilfe,

Content-Key: 154372

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

Printed on: April 26, 2024 at 04:04 o'clock

Member: BigWim
BigWim Nov 04, 2010 at 15:04:42 (UTC)
Goto Top
Hallo Patrick,

was spricht denn gegen ein xcopy mit Parameter /M?

Kann mir einer dabei helfen? am besten mit kurzer Erklärung dabei, was wo in der Batch passiert.
die Beschreibung zu xcopy rufst Du mit xcopy /? auf.


Markus
Mitglied: 60730
60730 Nov 04, 2010 at 15:19:25 (UTC)
Goto Top
moin,

auch auf die Gefahr hin, dass es länger dauert...

  • erstmal die Statik von dem Gerüst...

Diese Dateien sollen in den Ordner2 kopiert werden.
  • Bei sowas wirds gerne kompliziert, denn was passiert, wenn das Script das zweit und ff mal läuft?
  • Sollen evtl. vorhandene Dateien überschrieben werden?

Ordner1 hat undefinierbar (kann sich immer ändern) viele Unterorderner. In diesen Unterordnern sind verschiedene Dateien.
  • in einer Dosbos -nicht Batch findet man sowas so heraus.
for /f %a in ('dir /AD /S /B') do echo %a
  • Alternativ zu BigWims Hilfe zeigt dir dir /? und for /? was da warum so passiert.
  • Wenn du was kopieren willst copy oder xcopy - zum test schreibt er das nur in die Dosbox (das macht das echo)
for /f %a in ('dir /AD /S /B') do echo xcopy %a\*.* Ordner2\
  • wenn du Bigwims Vorschlag angesehen hast und nur neuere Dateien kopiert überschrieben werden sollen
for /f %a in ('dir /AD /S /B') do echo xcopy /d %a\*.* Ordner2\

Ich denke, das reicht erstmal.
Für eine Batch mußt du aus jedem einzelnen % einen doppelten %% nehmen.

Gruß
Member: Patrick-W
Patrick-W Nov 05, 2010 at 07:34:54 (UTC)
Goto Top
So ich habe gestern abend noch ein bißchen was getestet und bin schon etwas weiter...

@echo on


for %%i in (%0) do set STARTPATH=%%~dpi

for /f %%a in ('dir /AD /S /B "W:\Test"') do echo %%a
set QUELLE= %%a
set ZIEL=C:\Programme\Test2
c:\programme\robocopy\robocopy.exe "%QUELLE%" "%ZIEL%" /E /ZB /COPY:DAT /PURGE /R:0 /W:0 /NDL /NP

pause


Irgendwas mache ich noch falsch.


Zur Anmerkung:

In dem Ordner Test1 sind mehrere unterordner, aus dem die Dateien (nur die Dateien der Unterordner) in den Ordner Test 2 kopiert.
Member: BigWim
BigWim Nov 05, 2010 at 08:13:30 (UTC)
Goto Top
Moin Moin,

es wäre nett, wenn Du schreiben würdest, was genau nicht Deinen Erwartungen entspricht.
Oftmals fehlt die Zeit zum Raten ....

Ich würde (wieder blind) auf die Verwendung der For-Schleife tippen, was durch die Verwendung von echo deutlich werden müßte.

Probier es mal so (und es wäre nett, wenn Du die Code-Formatierungen nutzt!)

@echo on
for %%i in (%0) do set STARTPATH=%%~dpi
set ZIEL=C:\Programme\Test2 

for /f %%a in ('dir /AD /S /B "W:\Test"') do (  
    echo %%a
    C:\programme\robocopy\robocopy.exe "%%a" "%ZIEL%" /E /ZB /COPY:DAT /PURGE /R:0 /W:0 /NDL /NP  
)
pause


Markus
Member: Patrick-W
Patrick-W Nov 05, 2010 at 10:02:57 (UTC)
Goto Top
Besten dank,

genau das war das Problem läuft nun wie gewünscht.

Danke Danke Danke....
Member: BigWim
BigWim Nov 05, 2010 at 10:13:53 (UTC)
Goto Top
Schön, dann noch erfolgreiches Kopieren.

Bitte noch die Frage als gelöst kennzeichnen face-wink


Markus