sascha224
Goto Top

Bei Dateien mit gleichem Namenspräfix die ältesten Dateien wegkopieren

Hallo zusammen,

da meine cmd- und Batch-Kenntnisse eher rudimentär vorhanden sind, stehe ich mit der folgenden Aufgabe vor einer echten Herausforderung:

In einem Verzeichnis liegen viele gleichartige PDF-Dateien. Alle Dateien beginnen mit einer Artikel-Nr., gefolgt von einem Underscore (_) und danach einem willkürlichen String. Von einer Artikel-Nr. kann es mehrere PDF-Dateien geben, aber nun soll ein regelmässig auszuführender Job dafür sorgen, dass jeweils nur die neueste Datei einer Art.-Nr. in diesem Verzeichnis verbleibt und alle älteren Dateien der selben Art.-Nr. in ein anderes Verzeichnis umkopiert werden.

Beispiel:
Vorhanden:
1000-1_Datei1.pdf
1000-1_Datei2.pdf
1005_Datei678.pdf
1005_nocheineweiteredatei.pdf
4711-1_undnocheinedatei.pdf
4711-1_nochmal.pdf
4711-2_undwiedereine.pdf

Der Job (vorzugsweise per Batch oder auch PowerShell) soll nun dafür sorgen, dass nun bei mehrfach vorkommenden Artikel-Präfixen alle älteren Dateien eines Präfixes in ein anderes Verzeichnis kopiert werden und nur die jeweils neueste (nach Dateidatum) im ursprünglichen Verzeichnis verbleiben:

1000-1_Datei2.pdf
1005_nocheineweiteredatei.pdf
4711-1_undnocheinedatei.pdf
4711-2_undwiedereine.pdf

Für die Unterscheidung nach Artikel-Nr. ist nur der String vor dem ersten Underscore von links ausschlaggebend. Es ist aber möglich, dass in dem String rechts von der Artikel-Nr. weitere Underscores vorkommen, welche aber für die Unterscheidung nicht relevant sind.

Ich vermute mal, dass dies für die cmd- oder PowerShell-Profis unter euch eine kurze Fingerübung darstellt.... Hat jemand einen Vorschlag, wie dies am besten zu lösen wäre?
Wie gesagt, schön wäre ein cmd-Batch oder ein PowerShell-Script, dass ich z. B. stündlich per Task Scheduler laufen lassen könnte.

Besten Dank schon mal im voraus face-smile

Content-ID: 356524

Url: https://administrator.de/forum/bei-dateien-mit-gleichem-namenspraefix-die-aeltesten-dateien-wegkopieren-356524.html

Ausgedruckt am: 23.12.2024 um 13:12 Uhr

BassFishFox
BassFishFox 30.11.2017 um 01:13:05 Uhr
Goto Top
Hallo,

Kann es sein, dass es bei Dir reicht alle Dateien NICH zu kopieren/verschieben, welche JUENGER sind wie eine bestimmte Zeit?
Oder halt alle Dateien zu kopieren/verschieben die aelter sind wie eine bestimmte Zeit?

Such mal hier bei administrator.de danach. Gibt genuegend Beispiele dafuer.

BFF
sascha224
sascha224 30.11.2017 um 06:50:19 Uhr
Goto Top
Nicht ganz - es darf einfach die jüngste Datei eines Präfixes nicht wegkopiert werden, eine bestimmte Zeit spielt hier keine Rolle.
134464
Lösung 134464 30.11.2017 aktualisiert um 10:23:17 Uhr
Goto Top
Ich vermute mal, dass dies für die cmd- oder PowerShell-Profis unter euch eine kurze Fingerübung darstellt
So is et, Pippikrams mit Powershell
gci 'c:\Folder' -Filter *.pdf | sort LastWriteTime -Desc | Group {$_.Basename.split('_')} | ?{$_.Count -gt 1} | %{$_.Group | Select -skip 1 | Move-Item -Destination 'c:\Archiv' -Force}  
Quell- und Ziel-Ordnernamen anpassen und den Cheffe be###en wat dat Zeug hält face-big-smile.
sascha224
sascha224 30.11.2017 um 10:31:14 Uhr
Goto Top
Grossartig, genau so face-smile Vielen Dank @specht!
Wird Zeit, dass ich mich mal intensiv mit der PowerShell beschäftige, das Ding ist einfach mächtig!