headon
Goto Top

Powershell - Dateien automatisiert verschieben und umbennen

Hallo Zusammen,

ich bin mal wieder auf eure Hilfe angewiesen da ich mich wieder zu dämlich anstelle.

Problematik:

Wir bekommen jeden Tag auf dem sFTP Dateien vom Kunden bereit gestellt. Diese möchte ich nun in einen Hotfolder zur weiterverarbeitung verschieben.

Schritt 1: Dateien vom sFTP holen -> erledigt mit externem Tool da es dafür anscheind keine Windows Boardmittel gibt.
Schritt 2: Dateien aus diesem Ordner bzw den Unterordnern verschieben.
Problem 1: Dieser Ordner heißt jeden Tag anders (aktuelles Datum z.b. 20201208)
Problem 2: für die Weiterverarbeitung brauche ich noch ein Kürzel an der Datei damit ich weiß aus welchem Ordner sie kommt z.B. RDE-Dateiname.pdf für Rechnung Deutschland

Ich habe jetzt schon ein Powershellscript gefunden und angepasst aber aus irgendeinem Grund kopiert er die daten nicht.

### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
    $watcher = New-Object System.IO.FileSystemWatcher
    $date =Get-Date -Format yyyyMMdd
    $watcher.Path = "E:\Transfer\Kunde\$date\"  
    $watcher.Filter = "*.*"  
    $watcher.IncludeSubdirectories = $true
    $watcher.EnableRaisingEvents = $true  

### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
    $action = { $path = $Event.SourceEventArgs.FullPath
                robocopy /MOV E:\Transfer\kunde\ *.pdf
                
              }    
### DECIDE WHICH EVENTS SHOULD BE WATCHED 
    Register-ObjectEvent $watcher "Created" -Action $action  
    Register-ObjectEvent $watcher "Changed" -Action $action  
    Register-ObjectEvent $watcher "Deleted" -Action $action  
    Register-ObjectEvent $watcher "Renamed" -Action $action  
    while ($true) {sleep 1}

Powershell liefert allerdings auch keine Fehlermeldung.


vorhandene Struktur

Ordner mit aktuellem Datum -> Ordner 1 , Ordner 2, Ordner 3, Ordner 4

Beim "Root" Ordner ändert sich jeden Tag das Datum, die Ordner 1-4 heißen immer gleich. Es kann sein das einzelne Ordner davon aber auch mal leer sind. Ansonsten sind immer PDFs drin.

Diese PDFs sollen nun in einen Ordner kopiert werden und es soll ein Kürzel für den jeweiligen Ordner an den Dateinamen vorangestellt werden. Wichtig dabei nur die Dateien und nicht die Ordner da, das Tool welches die dateien weiterverarbeitet nicht mit Unterverzeichnissen umgehen kann.

Original Script zum kopieren und überwachen:

### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
    $watcher = New-Object System.IO.FileSystemWatcher
    $watcher.Path = "C:\***\Downloads"  
    $watcher.Filter = "*.*"  
    $watcher.IncludeSubdirectories = $true
    $watcher.EnableRaisingEvents = $true  

### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
    $action = { $path = $Event.SourceEventArgs.FullPath
                robocopy /MOV C:\***\Rechnungen Rechnung*.pdf
                robocopy /MOV C:\***\Lieferscheine Lieferschein*.pdf
              }    
### DECIDE WHICH EVENTS SHOULD BE WATCHED 
    Register-ObjectEvent $watcher "Created" -Action $action  
    Register-ObjectEvent $watcher "Changed" -Action $action  
    Register-ObjectEvent $watcher "Deleted" -Action $action  
    Register-ObjectEvent $watcher "Renamed" -Action $action  
    while ($true) {sleep 1}

Vielen Dank schon mal für eure Hilfe

Content-ID: 629358

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

Ausgedruckt am: 21.11.2024 um 22:11 Uhr

em-pie
em-pie 08.12.2020 um 22:42:00 Uhr
Goto Top
Moin,

Lass mal bei deinen Pfadangaben das abschließende \ weg...

Vermutlich liegt es daran...

Gruß
em-pie
HeadoN
HeadoN 09.12.2020 um 10:06:49 Uhr
Goto Top
Das hatte ich am Anfang probiert. Hat leider auch nicht geklappt
filippg
filippg 10.12.2020 um 00:24:00 Uhr
Goto Top
Hallo,

mir scheint dein Skript zum Verschieben der Dateien möglicherweise etwas "oversized". Brauchst du denn einen FileSytemWatcher, der Dateien immer _sofort_ nach einem Upload verschiebt? Oder tut es auch ein Task, den du alle X Minuten laufen lässt, und der alle Dateien verschiebt, die er findet?

Grüße

Filipp
HeadoN
HeadoN 10.12.2020 um 09:09:55 Uhr
Goto Top
Theoretisch würde auch eine batch reichen womit ich die Dateien per Aufgaben Planung automatisch verschieben kann.

Bei diesem Prozess reden wir davon das 2 bis 4 mal am Tag Daten kommen allerdings können das gerne mal 100 PDFs oder mehr sein.

Der watcher ist allerdings für spätere Prozesse interessant wo die Daten asap verteilt werden müssen.