loveboat

Batch für Kopieren bzw. Ersetzten, wenn...

Kopieren großer Datenmengen mit teilweise gleichen Dateinamen

Hallo,

Ich muss im Rahmen einer Datensicherung von verschiedenen Partitionen große Datenmengen zusammentragen und auf einen Sicherungsserver speichern. Dabei stoße ich immer wieder auf das Problem dass Dateien zwar gleich heißen, aber nicht die gleichen sind, da unterschiedlich groß.
Gibt es ein Batch oder einen cmd-Zeilen Code, der es mir ermöglicht gleichgroße Dateien zu ersetzen, ungleichgroße Dateien allerdings nicht zu ersetzen?

Wäre für Hilfe dankbar!

Gruß,
LB
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 110631

Url: https://administrator.de/forum/batch-fuer-kopieren-bzw-ersetzten-wenn-110631.html

Ausgedruckt am: 19.05.2025 um 16:05 Uhr

bastla
bastla 05.03.2009 um 14:33:59 Uhr
Goto Top
Hallo LoveBoat!

Schematisch etwa so:
for %i in ("D:\Quellordner\*.typ") do for %a in ("X:\Zielordner\%~nxi") do if %~zi==%~za copy "%i" %a  
Als Batch natürlich jedes "%"-Zeichen verdoppeln.

Grüße
bastla
LoveBoat
LoveBoat 05.03.2009 um 15:22:40 Uhr
Goto Top
Yes, klappt! ...........................wunderbar!
LoveBoat
LoveBoat 11.03.2009 um 13:21:51 Uhr
Goto Top
So, jetzt doch noch zwei Sachen aufgefallen:

1. Ein Bericht wäre gut, dh. eine txt-file die mir sagt welche Dateien und welche nicht kopiert wurden.

2. Ich habe einen Denkfehler begangen; es sollen natürlich zunächst einmal ALLE, dh. auch diejenigen Dateien, die nicht im Zielordner aber in Ursprungsordner drinne sind verschoben / kopiert werden. Wenn dann welche sowohl in Ursprungs- als auch Zielordner vorliegen, dann soll diese Regelung greifen die nur die gleichgroßen kopiert. Was dann übrigbleibt hat zwar den selben Dateinamen, aber eine andere Größe. (Das würde dann auch einen Bericht überflüssig machen).
bastla
bastla 11.03.2009 um 16:45:33 Uhr
Goto Top
Hallo LoveBoat!

Dann etwa so:
@echo off & setlocal
set "Quelle=D:\Quellordner\*.typ"  
set "Ziel=X:\Zielordner"  
set "LogK=X:\Kopiert.txt"  
set "LogNK=X:\NichtKopiert.txt"  

if exist "%LogK%" del "%LogK%"  
if exist "%LogNK%" del "%LogNK%"  

for %%i in ("%Quelle%") do (  
    if not exist "%Ziel%\%%~nxi" (  
        copy "%%i" "%Ziel%"  
        >>"%LogK%" echo %%i  
    ) else (
        for %%a in ("%Ziel%\%%~nxi") do if %%~zi==%%~za (  
            copy "%%i" "%Ziel%"  
            >>"%LogK%" echo %%i  
        ) else (
            >>"%LogNK%" echo %%i  
        )
    )
)
Grüße
bastla
LoveBoat
LoveBoat 12.03.2009 um 10:44:52 Uhr
Goto Top
OK Ich versuchs so. Als Batch müssen die "%" verdoppelt werden, so wars doch`?#

Bzw: An welcher Stelle muss ich was einfügen, verwirrend finde ich ("%Quelle%") und "%Ziel%\%%~nxi", welche Zeichen sollen stehen bleiben und welche muss ich rauslöschen wenn ich Quell- bzw Zielpfad einsetze?
bastla
bastla 12.03.2009 um 10:56:44 Uhr
Goto Top
Hallo LoveBoat!

Ist bereits ein Batch (das Verdoppeln von "%" gilt vor allem für Laufvariable einer "for"-Schleife, aber nicht für jegliche "%").

An welcher Stelle muss ich was einfügen
Anzupassen wären eigentlich nur noch die Pfade in den Zeilen 2 bis 4 [Edit] auch Zeile 5 [/Edit].

Grüße
bastla
LoveBoat
LoveBoat 12.03.2009 um 11:48:23 Uhr
Goto Top
Hallo Bastla,

ja habs gemerkt. Allerdings gibt mir dieser Batch nur die kopierten Dateien als txt aus. Mich würde aber vielmehr interessieren welche nicht kopiert wurden. Am besten wäre, wie gesagt, er würde die Dateien nicht kopieren sondern verschieben, so dass im Quellordner nur Dateien mit selbem Namen aber verschiedener Größe übrigbleiben.
bastla
bastla 12.03.2009 um 12:30:46 Uhr
Goto Top
Hallo LoveBoat!

Eigentlich solltest Du auch eine Datei "NichtKopiert.txt" (wie in Zeile 5 festgelegt - daher bitte auch diesen Pfad anpassen) erhalten - ansonsten "copy" durch "move" ersetzen.

Nur zur Sicherheit noch der Hinweis, dass "move" (wie auch "copy") gleichnamige Dateien im Zielordner ohne Rückfrage überschreibt.

Grüße
bastla
LoveBoat
LoveBoat 12.03.2009 um 13:06:12 Uhr
Goto Top
Ja, die Datei "NichtKopiert.txt" taucht leider nicht auf. Aber mit der "Move"-Variante dürfte das auch eigentlich nicht weiter tragisch sein.

Viele Dank!

Grüße.
LoveBoat