Copyjob - Dateien kopieren und automatisch Ordner mit Tagesdatum erstellen

Burnz84

Experte
Thread Starter
Mitglied seit
19.01.2016
Beiträge
493
Hallo Luxxer,

ich habe ein Problem bzw. eine Aufgabe bei der ich gerade auf dem Schlauch stehe und nicht weiter komme.
Ich habe einen Ordner, welcher ca. 560.000 Dateien enthält. Von diesem Ordner muss ich die Dateien des letzten halben Jahres von A nach B kopieren. Beim Kopieren sollen die Dateien aber automatisch in Ordner kopiert werden, welcher dem Datum der Dateien entspricht.
Also Dateien vom 01.09.2024 sollen in einen Ordner z.B. "01092024" oder "01.09.2024" kopiert werden. Dieser Ordner existiert aber noch nicht auf dem Zielsystem und muss beim Kopieren erstellt werden. Das ganze soll täglich als geplante Aufgabe laufen.
Wie könnte man denn so etwas abbilden?
Wahrscheinlich muss ich das Thema auch zweiteilen. Einmal einen Job für die "Altdaten" der eigentlich nur 1x laufen muss und einen Job für die aktuellen Daten, welcher dann immer mehrmals täglich läuft.
Ich denke das Erstellen der Ordner sollte gut mit Powershell funktionieren. Ich würde das letzte halbe Jahr mit einem Script ähnlich "Erstelle Ordner mit den Namen Datum-180Tage bis heute" abbilden und neue Ordner dann immer kurz vor 0:00Uhr erstellen, damit für den Copyjob der neue tagesaktuelle Ordner immer vorhanden ist.
Generell fehlt mir die Idee, welches Tool ich nehmen kann um Dateien mit Datum X in Ordner X zu schieben.

Hat evtl. jemand einen Rat für mich oder hat so etwas schon mal umgesetzt?

BG

Burnz
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Mit robocopy hat du Parameter für letzten Zugriff und zuletzt geändert.
/maxage:180 müsste das ja dein sein. Das löst aber noch nicht das Problem mit den Ordnern, welche erstellt werden müssen/sollen. Die Frage ist, ob das RoboCopy schafft oder ob ich das mit dem PS Script klären muss.

BG

Burnz
 
Hast du mal ganz stumpf Copilot oder ChatGPT danach gefragt? Gerade solch kleinen Scriptsachen sollten sich damit doch recht einfach umsetzen lassen.

Ich hab deinen Text 1:1 mal reingeschmissen, klingt brauchbar.
 
robocopy ist ein Kommandozeile Programm um Daten/Ordner zu kopieren/verschieben. Für die Ordnererstellung musst du selber was schreiben oder wie schön erwähnt die KI deiner Wahl danach fragen
 
falls es möglich ist und nicht laut Definition fest vorgeschrieben ist, würde ich empfehlen, die Ordner anders zu benennen: 20240901, dann klappt es auch besser mit der Sortierung im File Explorer etc.
 
Die ganze Aufgabenstellung ist reichlich dubios.

Welches Dateidatum ist gemeint? Das Erstellungsdatum, das letzte Änderungsdatum, das letzte Zugriffsdatum oder gar ein Datum im Dateiname?

Wieso werden die Dateien kopiert und nicht verschoben? Muss da beim Joblauf etwa geprüft werden, ob die Datei im Zielordner bereits existiert und zusätzlich, ob sich deren Inhalt unterscheidet oder kann eine dort bestehende einfach ohne Prüfung überschrieben werden? Was ist, wenn letztlich 1 Datei in mehreren Ordnern landet, es also zu Redundanzen kommt? Durch das Beibehalten bereits abgearbeiteter Dateien wird der Joblauf und die zugehörige Systemlast sinnloserweise auch beständig anwachsen.

Was ist der Hintergrund dieser seltsamen Anforderung?

Ansonsten hier ein PS-Script, das alle Dateien eines Quellpfads, die jünger als 180 Tage sind, in einen entsprechenden Datums-Unterordner (bspw. "2024-09-23") innerhalb eines Zielpfads kopiert:

Code:
$source       = "C:\source"
$destination  = "C:\destination"
$sixmonthsago = (Get-Date).AddDays(-180)
$files        = Get-ChildItem -LiteralPath $source -Recurse

foreach ($file in $files) {
  if ($file.LastWriteTime -ge $sixmonthsago) {
    $date      = $file.LastWriteTime.ToString("yyyy-MM-dd")
    $subfolder = $destination + "\" + $date

    if (!(Test-Path -Path $subfolder -PathType Container)) {
      New-Item $subfolder -ItemType Directory
    }

    Copy-Item $file.FullName -Destination $subfolder -Force -Confirm:$false
  }
}
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh