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-Key: 356524

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

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

Member: BassFishFox
BassFishFox Nov 30, 2017 at 00:13:05 (UTC)
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
Member: sascha224
sascha224 Nov 30, 2017 at 05:50:19 (UTC)
Goto Top
Nicht ganz - es darf einfach die jüngste Datei eines Präfixes nicht wegkopiert werden, eine bestimmte Zeit spielt hier keine Rolle.
Mitglied: 134464
Solution 134464 Nov 30, 2017 updated at 09:23:17 (UTC)
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.
Member: sascha224
sascha224 Nov 30, 2017 at 09:31:14 (UTC)
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!