mrtestuser
Goto Top

Datei-Massenumbenennung als Windows Service

Hallo zusammen,

ich habe einen Netzwerkscanner, der nur Dateinamen vergibt, die mir nicht gefallen.
Deswegen suche ich nach einem Tool, das ich auf dem Server als Windows Dienst laufen lassen kann.

Dieser soll jedes Dokument, welches im Ordner landet, umbenennen mit dem Dateiformat JJJJ-MM-TT egal was.
Anschließend sollte die Datei in einem anderen Ordner verschoben werden.
Dort würde dann der OCR Dienst die Volltextsuche übernehmen.

Kennt jemand von Euch was passendes dafür?

Danke für eventuelle Ideen!

Content-Key: 390260

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

Printed on: April 20, 2024 at 02:04 o'clock

Member: NixVerstehen
NixVerstehen Oct 21, 2018 at 14:43:13 (UTC)
Goto Top
Da fällt mir ein alter Beitrag hier im Forum ein:
Robocopy umbenennen u. kopieren

Gruß NV
Mitglied: 137443
137443 Oct 21, 2018 updated at 15:00:30 (UTC)
Goto Top
Also zu dem Thema findet man hier nun doch Massenhaft Input, z.B. hier in 2 Sekunden mit der Suche hier gefunden:
VBA - VBS : Umbennen und Verschieben von Dateien in Loop

Gruß l.
Member: Pedant
Pedant Oct 21, 2018 at 15:50:11 (UTC)
Goto Top
Hallo mrtestuser,

zum Umbenennen hast Du jetzt Anregungen erhalten.
Reicht es denn, wenn das Suchen, Verschieben und Umbenenen in kurzen Intervallen passiert oder muss es quasi sofort sein?

Zum Frageteil "Dienst" oder alternativ "geplante Aufgabe" kannst Du hier nachlesen:
Batch als Dienst bei Systemstart ohne Anmeldung ausführen

Gruß Frank
Member: erikro
erikro Oct 22, 2018 at 06:12:59 (UTC)
Goto Top
Moin,

Zitat von @mrtestuser:
ich habe einen Netzwerkscanner, der nur Dateinamen vergibt, die mir nicht gefallen.

Kann man das nicht konfigurieren? Ich kenne das eigentlich nur so, dass man irgendwo im Webinterface umstellen kann, wie die Dateien benannt werden.

hth

Erik
Member: Pedant
Solution Pedant Oct 22, 2018, updated at Oct 23, 2018 at 10:29:11 (UTC)
Goto Top
Hallo mrtestuser,

ich hatte mal ein Programm geschrieben, dass die Aufgabe schon weitestgehend erledigen würde.
Einen Windows-Dienst hatte ich bisher noch nicht geschrieben.
Da die Aufgabe (Dienst-Programmieren) mich neugierig gemacht hat, habe ich jetzt einen Dienst programmiert, der per Konfigdatei einstellbar ist und hoffentlich tut was er soll.
Ich hab ihn natürlich getestet, aber da er potentiell Dateien verschieben kann, kann man eigentlich nicht genug testen.

PScanMover
PScanMover = Pedants Scan Mover
Ein Dienst zum automatischen Kopieren oder Verschieben von Dateien.

Funktionsumfang
Der Dienst überwacht einen Ordner (Source folder) und wenn dort neue Dateien entstehen, dann kopiert oder verschiebt er sie in einen Zielordner (Taget folder).
Auf Wunsch werden die Dateien dabei umbenannt.
Zum Umbenennen wird ein Rename pattern verwendet, um den Zieldateinamen variabel zu gestalten.

PScanMover.ini
# PScanMover Ver. 1.0 - (c) Pedant 2018

Source folder = D:\Temp\Test
Target folder = D:\Temp\Test\Target Folder
Move = 1
Rename = 1
Overwrite = 0
Rename pattern = Fester Text [date]_[time] [original] [###]
Date pattern = yyyy-MM-dd
Time pattern = HHmmss

Bedeutung
Source folder = Zu überwachender Quellordner
Target folder = Ordner in den die Dateien kopiert oder verschoben werden
Move = 0 (Dateien werden kopiert)
Move = 1 (Dateien werden verschoben)
Rename = 0 (Zieldatei behalten den Namen ihrer Quelldatei)
Rename = 1 (Zieldatei werden umbenannt)
Overwrite = 0 (Gleichnamige Dateien in Ziel bleiben erhalten. Es wird nicht Kopiert oder Verschoben.)
Overwrite = 1 (Gleichnamige Dateien in Ziel werden überschrieben.)
Rename pattern = Fester Text [date]_[time] [original] [###]
Das Rename pattern kann einen Kombination aus festen Text und/oder Platzhaltern sein.
[original] wird aufgelöst zum Dateinamen der zugehörigen Quelldatei
[date] wird aufgelöst zum aktuellen Datum
[time] wird aufgelöst zur aktuellen Uhrzeit
[###] wird aufgelöst zu einer fortlaufenden Nummer mit führenden Nullen, je # eine Stelle, also bei ### wird es zu 001 bis 999 und dannach 1000 und aufwärts.

Date pattern = yyyy-MM-dd (das legt fest wie das Datum für [date] formatiert wird.
Time pattern = HHmmss (das legt fest wie die Uhrzeit für [time] formatiert wird.

Verwendet wird dabei die C#-Funktion DateTime.Now.ToString(Date pattern) bzw. DateTime.Now.ToString(Time pattern)
Siehe: https://docs.microsoft.com/de-de/dotnet/standard/base-types/standard-dat ...
(Anmerkung: Man könnte auch mit "Date pattern" Uhrzeiten ausgeben lassen und mit "Time pattern" Datumswerte, da die Umwandlung jeweils mit derselben Funktion erfolgt.)

Installation mittels InstallUtil.exe
"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe" "D:\MeinOrdner\PScanMover.exe"
(Pfade gilt es anzupassen.)
Der Dienst taucht in der Dienste-Liste auf als "Pedants Scan Mover".

Deinstallation mittels InstallUtil.exe
"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe" /u "D:\MeinOrdner\PScanMover.exe"
(Pfade gilt es anzupassen.)

Download
http://www.pedant.de/html/download.php?datei=pscanmover&version=101

Nutzung
Wenn der Dienst installiert wurde, dann erzeugt er beim Start eine Konfigdatei namens "PScanMover.ini".
Diese enthält die von mir definierten Standardwerte, allerdings keinen Wert für "Source folder".
Der erste Start (noch ohne "PScanMover.ini") wird daher scheitern.
Den Wert für "Source folder" muss man dann noch per Notepad setzen und alle anderen Werte nach dem eigenen Bedarf anpassen und dann den Dienst erneut starten.

Logging
Der Dienst schreibt in eine Logdatei namens "PScanMover.log".
Scheitert das Schreiben in diese Datei oder tritt ein Fehler auf, der den weiteren Ablauf behindert, schreibt er seine Meldung in die Ergeignisanzeige des System und dort unter Windows Logs -> Anwendung und beendet sich dann.

Warnung
Ich habe den Dienst zwar getestet, aber alle Eventualitäten kann ich im "Labor" nicht ausprobieren.
Ich übernehme keine Haftung für irgendwelche Schäden und/oder Dateiverluste.
Probier den Dienst daher zuerst ausführlich auf einem unbedenklichen Testsystem aus, bevor Du ihn auf einem Produktiv-Server installierst und laufen lässt.

Gruß Frank
Member: Pedant
Pedant Jan 08, 2019 at 10:26:15 (UTC)
Goto Top
Hallo mrtestuser,

ist "mrtestuser" ein Synonym für Mister Test the Users?
Hattest Du eine Frage oder ging es nur darum die Forumsuser zu testen ob sie eine Antwort finden?

Vielleicht bin ich auch nur wieder auf einen der vielen Fragengenerierungsbots reingefallen und hatte wieder angenommen, dass hier ein Kollege mit einem Problem, nach Hilfe sucht.

Gruß Frank
Member: mrtestuser
mrtestuser Jan 08, 2019 at 17:41:28 (UTC)
Goto Top
Tach Pendant,

weder noch.

Vieln Dank für Deine Ausführungen und Mühe. Diese habe ich vor ca. 2 Wochen auf einem Server 2016 impementiert und verrichtet seit dem sauber seinen Zweck.
Pfeil schnell und hat keine Probleme mit den Scanner Dateien - was nicht üblich ist.
Die Scanner legen meist die Datei an, befüllen diese dann mit dem Inhalt und schreiben diese dann zu ende. Bei größeren Dokumenten kann das durchaus mal 30-40 sec. dauern - dabei fallen einige Tools schon mal auf die Nase.

Habe Dir ein Herz dagelassen und Zur Lösung beigetragen.

Merci, merci, merci,
Christian aka mrtestuser
Member: Pedant
Pedant Jan 08, 2019 at 18:48:10 (UTC)
Goto Top
Hallo Christian,

Zitat von @mrtestuser:
Vielen Dank für Deine Ausführungen und Mühe. Diese habe ich vor ca. 2 Wochen auf einem Server 2016 impementiert und verrichtet seit dem sauber seinen Zweck.

es freut mich, dass ich helfen konnte, daher danke für die Rückmeldung und für Dein Vertrauensvorschuss das Tool auszuprobieren.

Zitat von @mrtestuser:
Die Scanner legen meist die Datei an, befüllen diese dann mit dem Inhalt und schreiben diese dann zu Ende. Bei größeren Dokumenten kann das durchaus mal 30-40 sec. dauern - dabei fallen einige Tools schon mal auf die Nase.

Bei Kopiervorgängen ist das im Grunde genauso.
Der FileSystemWatcher bemerkt Veränderungen quasi sofort und dann gerne bevor sie angeschlossen sind.
Ich prüfe neuen Dateien in einer Schleife, ob ich sie schreibend öffnen kann und wenn der Zugriff fehlschlägt, weil sie noch vom erzeugenden Prozess geöffnet sind, warte ich kurz und versuche es erneut, bis es gelingt.
Schreibend öffnen will ich sie eigentlich nicht und hineinschreiben lass ich auch nichts, aber diese Zugriffsart ist ein guter Indikator dafür, dass eine Datei exklusiv genutzt werden kann, um sie umzubenennen oder zu verschieben oder was auch immer damit zu tun ist.

Gruß Frank