Automatisiert Dateien aktualisieren
Dateien aus einem Stapel automatisch auf einem anderen Laufwerk suchen und ersetzen.
Hallo Leute,
ich habe ein einfach klingendes Problem: Ich habe Dateien auf einem Ziellaufwerk verstreut (PDF's und Video's) die regelmäßig aktualisiert werden.
Leider werden diese Dateien zigfach auf dem Laufwerk herumkopiert und das Aktualisieren ist immer eine Pest (sind derzeit ca. 200 Dateien die ich 2x im Monat so suchen und überschreiben muß).
Ich habe mir im Moment ein Batchdatei geschrieben, die die Datei nach Namen auf dem Laufwerk sucht und dann gezielt vom Vorlagelaufwerk überkopiert
Das geht aber leider immer nur File für File und hätte das gerne Automatisiert.
Nun meine Frage: Gibt es ein fertiges Tool, dass alle Files von einem Ausgangspfad nacheinander im Zielfpfad sucht und ersetzt?
Habe da auch langer Recherche nix gefunden.
[Edit Biber]Ich brauche daher Eure Hiiiilfeee !! Bitte diese Floskeln meiden in Zukunft. Danke [/Edit]
Danke Alexander
Hallo Leute,
ich habe ein einfach klingendes Problem: Ich habe Dateien auf einem Ziellaufwerk verstreut (PDF's und Video's) die regelmäßig aktualisiert werden.
Leider werden diese Dateien zigfach auf dem Laufwerk herumkopiert und das Aktualisieren ist immer eine Pest (sind derzeit ca. 200 Dateien die ich 2x im Monat so suchen und überschreiben muß).
Ich habe mir im Moment ein Batchdatei geschrieben, die die Datei nach Namen auf dem Laufwerk sucht und dann gezielt vom Vorlagelaufwerk überkopiert
Das geht aber leider immer nur File für File und hätte das gerne Automatisiert.
Nun meine Frage: Gibt es ein fertiges Tool, dass alle Files von einem Ausgangspfad nacheinander im Zielfpfad sucht und ersetzt?
Habe da auch langer Recherche nix gefunden.
[Edit Biber]
Danke Alexander
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 25.01.2010 um 07:02:19 Uhr
Beitrag verschoben von "Tools & Utilities" nach "Batch & Shell"... scheinen keine (Zusatz-)Utilities erforderlich zu sein.
Content-ID: 133722
Url: https://administrator.de/forum/automatisiert-dateien-aktualisieren-133722.html
Ausgedruckt am: 03.04.2025 um 11:04 Uhr
14 Kommentare
Neuester Kommentar

Suchen und ersetzen heißt, ein Spiegelabbild von einer Quelle (mit den aktuellsten Version) erstellen? Wenn ja, schau dir mal robocopy an: http://www.wintotal.de/artikel/artikel-2007/91.html
Hallo 
Kann man das nicht auch einfach mit xcopy machen, oder hab ich die Fragestellung jetzt falsch verstanden?
Für ein tägliches Aktualisierungsbackup bei mir an der Arbeit nutze ich:
xcopy "C:\Beispielorder\*.*" "D:\Beispielbackupordner\" /sdyhcr
S: Kopiert Verzeichnisse und Unterverzeichnisse, die nicht leer sind
D: Kopiert nur die an oder nach dem Datum geänderten Dateien. Ist kein Datum angegeben, werden nur Dateien kopiert, die neuer als die bestehenden Zieldateien sind.
Y: Unterdrückt die Aufforderung zur Bestätigung, dass eine vorhandene Zieldatei überschrieben werden soll.
H: Kopiert auch Dateien mit den Attributen 'Versteckt' und 'System'.
C: Setzt das Kopieren fort, auch wenn Fehler auftreten.
R: Überschreibt schreibgeschützte Dateien.
Anstatt S kann E verwendet werden, dann werden auch leere Unterverzeichnisse mitkopiert.
Damit werden dann nicht jedes mal alle 23948203482304823 Dateien kopiert, sondern nur noch neu erstellte werden kopiert und veränderte werden aktualisiert, d.h. die vorhandene ältere Version im Backupverzeichnis mit der veränderten neueren überschrieben.
Ist das nicht genau Dein Anliegen?
Gruß Dark
Nachtrag:
Es kann zusätzlich auch noch noch "vo" verwendet werden.
V: Überprüft jede neue Datei auf Korrektheit.
O: Kopiert Informationen über den Besitzer und ACL.
Für denn Fall, das bestimmte Dateitypen nicht kopiert werden sollen, z.B. temp. Dateien, kann man diese ausschließen mit:
/exclude:C:\exclude.txt
In der TXT dann einfach pro Zeile die auszuschließenden Dateiendungen, z.B.
Die ganze Zeile sähe dann so aus.
xcopy "C:\Beispielorder\*.*" "D:\Beispielbackupordner\" /sdyhcrvo /exclude:C:\exclude.txt
Kann man das nicht auch einfach mit xcopy machen, oder hab ich die Fragestellung jetzt falsch verstanden?
Für ein tägliches Aktualisierungsbackup bei mir an der Arbeit nutze ich:
xcopy "C:\Beispielorder\*.*" "D:\Beispielbackupordner\" /sdyhcr
S: Kopiert Verzeichnisse und Unterverzeichnisse, die nicht leer sind
D: Kopiert nur die an oder nach dem Datum geänderten Dateien. Ist kein Datum angegeben, werden nur Dateien kopiert, die neuer als die bestehenden Zieldateien sind.
Y: Unterdrückt die Aufforderung zur Bestätigung, dass eine vorhandene Zieldatei überschrieben werden soll.
H: Kopiert auch Dateien mit den Attributen 'Versteckt' und 'System'.
C: Setzt das Kopieren fort, auch wenn Fehler auftreten.
R: Überschreibt schreibgeschützte Dateien.
Anstatt S kann E verwendet werden, dann werden auch leere Unterverzeichnisse mitkopiert.
Damit werden dann nicht jedes mal alle 23948203482304823 Dateien kopiert, sondern nur noch neu erstellte werden kopiert und veränderte werden aktualisiert, d.h. die vorhandene ältere Version im Backupverzeichnis mit der veränderten neueren überschrieben.
Ist das nicht genau Dein Anliegen?
Gruß Dark
Nachtrag:
Es kann zusätzlich auch noch noch "vo" verwendet werden.
V: Überprüft jede neue Datei auf Korrektheit.
O: Kopiert Informationen über den Besitzer und ACL.
Für denn Fall, das bestimmte Dateitypen nicht kopiert werden sollen, z.B. temp. Dateien, kann man diese ausschließen mit:
/exclude:C:\exclude.txt
In der TXT dann einfach pro Zeile die auszuschließenden Dateiendungen, z.B.
.tmp
~$
.lnk
xcopy "C:\Beispielorder\*.*" "D:\Beispielbackupordner\" /sdyhcrvo /exclude:C:\exclude.txt
Moin Galuwenator,
auch das könntest mit XCopy erreichen.
XCopy kennt einen Schalter /L, der die relevanten Dateien nur anListet und nicht kopiert.
So würde ein "XCOPY N:\abc.pdf d:\temp /s /L" alle Dateien abc.pdf auf Laufwerk N:\ in allen Unterverzeichnissen auflisten (plus eine Zeile "xxx Dateien kopiert").
Wäre also dasselbe wie das Filemonkey-Resultat.
Und ja, es ginge auch mit "dir N:\abc.pdf /s /b"... aber Xcopy /L ist schneller.
Grüße
Biber
auch das könntest mit XCopy erreichen.
XCopy kennt einen Schalter /L, der die relevanten Dateien nur anListet und nicht kopiert.
So würde ein "XCOPY N:\abc.pdf d:\temp /s /L" alle Dateien abc.pdf auf Laufwerk N:\ in allen Unterverzeichnissen auflisten (plus eine Zeile "xxx Dateien kopiert").
Wäre also dasselbe wie das Filemonkey-Resultat.
Und ja, es ginge auch mit "dir N:\abc.pdf /s /b"... aber Xcopy /L ist schneller.
Grüße
Biber
Moin Galuwenator,
ich versuche nochmal eine schrittweise Heranführung an die gemeinte Strategie.
Angenommen, es ginge mir um eine Liste von 100 Dateien, die auf einem QuellLaufwerk/Pfad und/oder einer Liste/Textdatei vorlägen.
Alle diese Quelldateien Q liegen auch irgendwo auf einem Zielverzeichnis Z vor (in irgendwelchen Unterpfaden) und sollen dort ersetzt werden.
Nehmen wir an, eine dieser Dateien, die überall ersetzt werden soll, wäre eine Datei "Readme.txt" und ich wollte die überall in meinem Zielpfad [Beispiel "D:\Temp"] und darunterliegenden Verzeichnissen ersetzen.
Dann wäre mein Vorgehen
Führe für jede Datei Q folgendes durch (erste Datei Q ist wie geschrieben "Readme.txt")
-- oder ---
Diese Ergebnisliste wiederum kannst du dann als komplette ZIEL-Liste als Input in einer FOR /F-Anweisung verwenden.
Z.B (vom CMD-Prompt aus:
Das wäre mein proof-of-concept am CMD-Prompt... wenn es klappen würde, dann sollten dir (gefahrlos als Simulation) alle zusammengebratenen COPY-Befehle angezeigt werden.
In einem Batch dann jeweils zwei Prozentzeichen (%%i statt %i) und wenn es lüpt, ggf. das Wort "Echo" einfach weglassen.
Grüße
Biber
ich versuche nochmal eine schrittweise Heranführung an die gemeinte Strategie.
Angenommen, es ginge mir um eine Liste von 100 Dateien, die auf einem QuellLaufwerk/Pfad und/oder einer Liste/Textdatei vorlägen.
Alle diese Quelldateien Q liegen auch irgendwo auf einem Zielverzeichnis Z vor (in irgendwelchen Unterpfaden) und sollen dort ersetzt werden.
Nehmen wir an, eine dieser Dateien, die überall ersetzt werden soll, wäre eine Datei "Readme.txt" und ich wollte die überall in meinem Zielpfad [Beispiel "D:\Temp"] und darunterliegenden Verzeichnissen ersetzen.
Dann wäre mein Vorgehen
Führe für jede Datei Q folgendes durch (erste Datei Q ist wie geschrieben "Readme.txt")
- finde alle Dateien mit dem Q-Dateinamen "Readme.txt" auf Zielverzeichnis und darunterliegenen Pfaden
> dir readme.txt /b /s
D:\temp\Bat-beispiele\fABMIN\SPRIS\Scripts\Readme.txt
D:\temp\Bat-beispiele\fABMIN\SPRIS\TestEnv\Readme.txt
D:\temp\Bat-beispiele\mp3tool\A1u570a\68\OS2\Readme.txt
D:\temp\Bat-beispiele\mp3tool\A1u570a\68\WINNT351\README.TXT
D:\temp\Bat-beispiele\mp3tool\mp3tool\A1u570a\68\OS2\Readme.txt
D:\temp\Bat-beispiele\mp3tool\mp3tool\A1u570a\68\WINNT351\README.TXT
D:\temp\uni-mainz\moveex\readme.txt
D:\temp\MBR\README.TXT
D:\temp\rplfaq97\Readme.txt
> xcopy d:\temp\readme.txt? f:\just4AList\ /LSD
D:\temp\Bat-beispiele\fABMIN\SPRIS\Scripts\Readme.txt
D:\temp\Bat-beispiele\fABMIN\SPRIS\TestEnv\Readme.txt
D:\temp\Bat-beispiele\mp3tool\A1u570a\68\OS2\Readme.txt
D:\temp\Bat-beispiele\mp3tool\A1u570a\68\WINNT351\README.TXT
D:\temp\Bat-beispiele\mp3tool\mp3tool\A1u570a\68\OS2\Readme.txt
D:\temp\Bat-beispiele\mp3tool\mp3tool\A1u570a\68\WINNT351\README.TXT
D:\temp\uni-mainz\moveex\readme.txt
D:\temp\MBR\README.TXT
D:\temp\rplfaq97\Readme.txt
9 Datei(en) kopiert
--- bzw mit wegfiltern der nicht benötigten Summenzeile --
D:\temp>
> xcopy d:\temp\readme.txt? f:\just4AList\ /LSD|find /v "Datei(en)"
D:\temp\Bat-beispiele\fABMIN\SPRIS\Scripts\Readme.txt
D:\temp\Bat-beispiele\fABMIN\SPRIS\TestEnv\Readme.txt
D:\temp\Bat-beispiele\mp3tool\A1u570a\68\OS2\Readme.txt
D:\temp\Bat-beispiele\mp3tool\A1u570a\68\WINNT351\README.TXT
D:\temp\Bat-beispiele\mp3tool\mp3tool\A1u570a\68\OS2\Readme.txt
D:\temp\Bat-beispiele\mp3tool\mp3tool\A1u570a\68\WINNT351\README.TXT
D:\temp\uni-mainz\moveex\readme.txt
D:\temp\MBR\README.TXT
D:\temp\rplfaq97\Readme.txt
Diese Ergebnisliste wiederum kannst du dann als komplette ZIEL-Liste als Input in einer FOR /F-Anweisung verwenden.
Z.B (vom CMD-Prompt aus:
FOR /F "delims=" %i in ('xcopy d:\temp\readme.txt? f:\just4AList\ /LSD^|find /v "Datei(en)"') DO @echo COPY q:\bla\Readme.txt "%i"
Das wäre mein proof-of-concept am CMD-Prompt... wenn es klappen würde, dann sollten dir (gefahrlos als Simulation) alle zusammengebratenen COPY-Befehle angezeigt werden.
In einem Batch dann jeweils zwei Prozentzeichen (%%i statt %i) und wenn es lüpt, ggf. das Wort "Echo" einfach weglassen.
Grüße
Biber
Moin bastla,
Natürlich nicht.... einziger Grund für die Nicht-Nennung von "Replace" war, dass ich diesen Befehl so selten verwende, dass der mir absolut nicht in den Sinn gekommen ist.
@Galuwenator
Also....zieh den optimalen Nutzen aus diesem kleinen Fachgespräch und
Biber
Zitat von @bastla:
@Biber
Nur interessehalber: Spräche etwas gegen
*lach*@Biber
Nur interessehalber: Spräche etwas gegen
replace q:\bla\Readme.txt d:\temp /s /u
>
Natürlich nicht.... einziger Grund für die Nicht-Nennung von "Replace" war, dass ich diesen Befehl so selten verwende, dass der mir absolut nicht in den Sinn gekommen ist.
@Galuwenator
Also....zieh den optimalen Nutzen aus diesem kleinen Fachgespräch und
- merk dir für allgemeine Batch-"Datei-Listen-Verarbeitung" die von mir gepostete (und fast immer verwendbare) Herangehensweise
- studiere für diesen speziellen Fall noch mal die Hilfe ("Replace /? am CMD-Prompt) und verwende dann ggf für deine Anforderung die wesentlich elegantere Lösung von bastla.
Grüße
bastla
Grüße und Dank zurückbastla
Biber
Moin Galuwenator,
auch das wäre wieder ein typischer Anwendungsfall für eine FOR/F-Anweisung...
Wenn du eine Liste "NeueDateien.txt" mit Pfadangaben+Dateinamen vorliegen hast:
-oder, wenn alle "neuen" Dateien in einem bestimmten Verzeichnis ("D:\EinPfad") stehen
[jeweils wieder die Syntax vom CMD-Prompt; im Batch zwei %-Zeichen statt eines...s.o.]
Grüße
Biber
[Edit] Tippfehlerkorrektur "%~nxi" statt "~%nxi", s.Kommentar unter. [/Edit]
auch das wäre wieder ein typischer Anwendungsfall für eine FOR/F-Anweisung...
Wenn du eine Liste "NeueDateien.txt" mit Pfadangaben+Dateinamen vorliegen hast:
FOR /F "delims=" %i in ("D:\einPfad\NeueDateien.txt") do replace "%i" d:\temp /s /u
FOR /F "delims=" %i in ('dir /b /a-d D:\einPfad\*.*') do replace "D:\EinPfad\%~nxi" d:\temp /s /u
Grüße
Biber
[Edit] Tippfehlerkorrektur "%~nxi" statt "~%nxi", s.Kommentar unter. [/Edit]
Moin Galuwenator,
...öhm....das geht/geht nicht könnte unter Umständen an einem Tippfehler in meiner Skizze/Variante 2 liegen...*schäm*
Da habe ich die Reihenfolge von Prozentzeichen und Tilde vertauscht...
FALSCH (berichtige ich oben!): .... do replace "D:\EinPfad\~%nxi"
RICHTIGER: ....do replace "D:\EinPfad\%~nxi"
Sorry
Biber
...öhm....das geht/geht nicht könnte unter Umständen an einem Tippfehler in meiner Skizze/Variante 2 liegen...*schäm*
Da habe ich die Reihenfolge von Prozentzeichen und Tilde vertauscht...
FALSCH (berichtige ich oben!): .... do replace "D:\EinPfad\~%nxi"
RICHTIGER: ....do replace "D:\EinPfad\%~nxi"
Sorry
Biber