Guten Abend,
ich habe die letzten Tage noch etwas für die Arbeit schreiben sollen: ein Script welches Daten automatisch in einen anderen Pfad kopiert, sobald diese erstellt werden. Nach ein wenig Sucharbeit bin ich über folgende Möglichkeit gestoßen: Über ein FileSystemWatcher Event bestimmte Abläufe auszuführen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
Write-Host "TXT-Copy" -F Magenta # Error Handling $ErrorActionPreference = "Stop" # Jede Exception ist ein TerminalError trap { Write-Host ("Fehler im Script: {0}" -f $_.Exception.Message) -F White -B Red; continue } # Pfade $srcDir="\PC333tempDaten" $dstDir = "Z:in" # Informationen ausgeben # Write-Host "## Informationen ##" -F DarkGray Write-Host "> Quelle : $srcDir" -F DarkGray Write-Host "> Ziel : $dstDir" -F DarkGray Write-Host # Event / Watcher # $watcher = New-Object System.IO.FileSystemWatcher $watcher.Path = $srcDir $watcher.IncludeSubdirectories = $true $watcher.EnableRaisingEvents = $true # Technisch gesehen Datei entfernen $deleted = Register-ObjectEvent $watcher "Deleted" -Action { Write-Host (Get-Date -F "dd hh:mm:ss")"$($eventArgs.Name)" -F Cyan } $created = Register-ObjectEvent $watcher "Created" -Action { Move-Item -Path ("{0}{1}" -f $srcDir,"*") -Dest $dstDir } Write-Host "Script-Start"(Get-Date -F "dd hh:mm:ss") -F Green Wait-Event Write-Host "Script-Ende" -F Red |
Das mit dem Verschieben hatte ich usprünglich anders vorgesehen.
Als mich mein Chef damit beautragte eine alternative Lösung zu finden habe ich erst einmal nach freien – auch kommerziell – Programmen zu suchen:
- DropIT ist eine nette kleine und vor allem freie Software. Leider funktionierte der „angepriesene“ FTP-Upload nicht so ganz. Außerdem ist automatisches Verschieben nicht die Grundidee hinter dem Programm.
(Links: Organisieren, Sortieren vs. Belverde)
- FTP Rush – dieses Tool wirbt damit Daten automatisch auf dem aktuellen Stand zu halten. Quasi ein FTP-Sync Programm. Die Aufmachung erinnert hier ein wenig an FileZilla. Mit der Script-Sprache und einer Task-Funktion sollen die Daten aktualisiert werden. Dies funktionierte nach langem auch mit der mitgelieferten Funktion (siehe Handbuch), allerdings sollten die Daten ja nicht nur kopiert, sondern verschoben werden (engl: move). Leider konnte ich keine Funktion zum Löschen der Quelldatei finden. Daher erwies sich dieses Programm leider auch nicht als geeignet.
(Links: QuickTips, Befehle)
- FTP Use Inst – dieses Programm soll angeblich laufen wie „net use“ auch, nur eben mit FTP Laufwerken. In unserem Fall bekam ich damit allerdings keine Verbindung zu Stande; Wieder einmal ohne einen großen Hinweis warum dies nicht funktionieren wollte.
- FDInst (FTP Drive v3.5) – welche Lizenz das Programm hat ist mir immer noch ein wenig rätselhaft. Das Programm funktionierte ebenfalls nicht wirklich. Keine Ahnung warum. Vielleicht liegt es daran, dass nur englisch und russisch einstellbar sind 🙂
Diese Programme waren als solches nicht schlecht. Die Ideen die hinter den Programmen steckten waren teilweise gut durchdacht, allerdings nicht für unsere Zwecke geeignet. Daher werden wir wohl leider auf ein kostenpflichtiges Programm umsteigen müssen, bzw. haben dies bereits getan.
Durch das o.g. Script werden in der Regel alle paar Stunden mehrere Text-Dateien kopiert. Das Laufwerk ist in unserem Fall durch ein NetDrive verbunden. Das Programm kann, wenn denn die benötigten Runtimes (vcredist) installiert sind, FTP Pfade in Windows als Laufwerk hinzufügen. Bei uns klappte dies allerdings auch nur mit Version 1.4.0 und leider nicht mit der aktuellen Version der zweiten Generation. Warum mir das Laufwerkin 2.2.0 keine Unterordner anzeigen wollte, konnte mir allerdings noch keiner sagen.
Eine andere Möglichkeit wäre sicherlich das ganze über Belverde laufen zu lassen. Belverde ist möglicherweise nicht ganz so schön anzusehen, dafür braucht es aber auch weniger Ressourcen.