6zeichen
Goto Top

Dateien per Batch kopieren - Diesmal etwas komplexer

Wer kann mir helfen?

Ich habe folgendes vorliegen:

1 Ordner mit ca. 1.500 Unterordnern, die jeweils völligst unterschiedliche Bezeichnungen haben.
In jedem Unterordner befindet sich ein weiterer Unterordner mit dem Namen SRC (immer gleich).
Also bspw.: C:\MeinOrdner\ordnerxyz234\SRC\

In jedem SRC Ordner liegen mehrere Dateien. Darunter ist jeweils einmal ein Word- und ein Excel Dokument. Die beiden Dokumente haben immer den Namen Profil-IchBinVariabel.doc & Konstrukt-IchBinVariabel.xls, wobei die Phrase IchBinVariabel tatsächlich variabel ist und in jedem Unterordner-Namen entspricht (bspw.: Profil-ordnerxyz234.doc).

Ich benötige folgendes:

Eine Kopie der beiden .doc & .xls in einem anderen Ordner, in dem für jedes doc&xls-Pärchen ein neuer Unterordner erstellt wird. Der Unterordner muss allerdings genauso lauten, wie der Original-Unterordner.
Also bspw.: C:\MeinZweiterOrdner\ordnerxyz234\Profil-ordnerxyz234.doc
& C:\MeinZweiterOrdner\ordnerxyz234\Konstrukt-ordnerxyz234.xls

Im Grunde fällt also der Unterordner SRC jeweils weg.


Wer kann mir dabei helfen? Ich bin schon die ganze Zeit am googlen und hier im Forum waren schon ähnliche Probleme beschrieben. Etwas passendes habe ich aber leider nicht finden können.

Gruß,
6zeichen

Content-Key: 68691

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

Printed on: April 25, 2024 at 14:04 o'clock

Member: miniversum
miniversum Sep 14, 2007 at 16:03:16 (UTC)
Goto Top
Als ersten ungetesteten versuch würd ichs so machen:
@echo off
FOR /F "delims=" %%n in ('dir /B /AD "C:\MeinOrdner\"') do (
md "C:\MeinZweiterOrdner\%%n"
copy "C:\MeinOrdner\%%n\SPC\Profil-%%n.doc" "C:\MeinZweiterOrdner\%%n\"
copy "C:\MeinOrdner\%%n\SPC\Konstrukt-%%n.xls" "C:\MeinZweiterOrdner\%%n\"
)

miniversum
Member: 6zeichen
6zeichen Sep 15, 2007 at 06:44:04 (UTC)
Goto Top
Vielen Dank für die Hilfe!

Hab es jetzt noch nicht getestet, da ich jetzt nicht im Büro bin. Werde aber gleich mal eine ähnliche Ordnerstruktur anlegen.

Allerdings hätte ich noch eine zusätzliche Frage:
Könnte man im Batch eine Funktion unterbringen, die die Dateien, die bereits im zweiten Ordner liegen auf das Datum der letzten Änderung überprüft und nur dann kopiert, wenn die Originaldateien zwischenzeitlich geändert wurden?

Das würde den Ablauf perfektionieren...

Gruß,
6zeichen
Member: bastla
bastla Sep 15, 2007 at 09:33:20 (UTC)
Goto Top
Hallo 6zeichen!

Im Prinzip müsste es genügen, als "copy"-Befehl "xcopy /d /y" einzusetzen ...

Wenn Du das Ganze etwas verschönern willst (insbesondere, um unnötige Meldungen zu vermeiden), könnte das auf Basis vom miniversum's Lösung so aussehen:
@echo off & setlocal
set "Quelle=C:\MeinOrdner"  
set "Ziel=C:\MeinZweiterOrdner"  

FOR /F "delims=" %%n in ('dir /B /AD "%Quelle%\"') do (  
	if not exist "%Ziel%\%%n" md "%Ziel%\%%n"  
	xcopy /d /y "%Quelle%\%%n\SRC\Profil-%%n.doc" "%Ziel%\%%n\" >nul  
	xcopy /d /y "%Quelle%\%%n\SRC\Konstrukt-%%n.xls" "%Ziel%\%%n\" >nul  
)

Grüße
bastla