Adrjan 10 Geschrieben 23. Mai 2014 Melden Teilen Geschrieben 23. Mai 2014 (bearbeitet) Hallo zusammen, ich weiß nicht ob das wirklich der richtige Ort für das Thema ist, aber ich denke eine Skriptlösung ist hier das beste. Es liegt folgendes Problem vor: In einer MySQl-Datenbank existiert eine Tabelle mit Pfad-Verweisen auf bestimmte abgelegte Daten. Z.b.: ID Pfad 001 C:\2013-02-05\2013.pdf Nur wurde scheinbar über Jahre hinweg keine feste Struktur für die Dateiablage eingehalten, so dass es zum einen keine durchgehenden laufenden Nummern existieren und auch die Ordner jeeils ein unterschiedlichen Aufbau besitzen (z.B. 2013_02_05 oder 2013-02-05). Optimal Zustand wäre, wenn sämtliche Pfade und Dateinamen folgenden Aufbau hätten: C:\2013_02_05\2013_0001.pdf 2013_02_05 wäre das Erstell- oder Anlagedatum der jeweiligen Datei(en) und 2013_0001.pdf setzt sich aus dem Jahr und einer durchgehend laufenden Nummer zusammen. Wie kann ich hier am besten vorgehen, gibt es hier Skripts, Programme o.ä. die so etwas können? Vor allem wie kann ich gewährleisten, dass nach der Restrukturierung der Ordner- und Dateiablage auch die Verweise in der Datenbank noch korrekt bleiben. Ich hoffe ihr könnte mir hier weiterhelfen. Falls das Thema in einem anderen Thread besser aufgehoben ist, bitte verschieben! Vielen Dank + viele Grüße! Adrjan bearbeitet 23. Mai 2014 von Adrjan Zitieren Link zu diesem Kommentar
daabm 1.366 Geschrieben 23. Mai 2014 Melden Teilen Geschrieben 23. Mai 2014 https://www.google.de/search?q=file+bulk+rename+windows Da dürfte was Geeignetes dabei sein... Zitieren Link zu diesem Kommentar
Adrjan 10 Geschrieben 24. Mai 2014 Autor Melden Teilen Geschrieben 24. Mai 2014 (bearbeitet) Hallo Martin, prinzipiell geht das schon in die Richtung. Ich weiß nur nicht wie ich das praktisch mit Programmen wie AntRenamer oder Bulk Rename hin bekomme. Insgesamt soll am Ende einehitlich folgende Datei/Ordnerstruktur entstehen: O:\2012\2012_01_01\2012_0001 Hierbei soll für jweiligen Tag ein eigener Überordner "2012_01_01" entstehen, in diesem dann die entsprechenden PDFs, identifiziert anch Änderungsdatum, einsortiert werden. Die PDFs bekommen zum einen eine Jahreszahl und eine durchgehende (durch das Jahr 2012) laufende Nummer (0001...XXXX). Ich habe mir folgenden Ablauf ausgedacht: - Alle PDFs unterhalb des "2012"-Ordners identifizieren - Änderungsdatum der einzelnen PDFs scannen - Ordner Anlegen auf Basis des Änderungsdatums "JJJJ_MM_TT" (Für jedes Änderungsdatum existiert ein Ordner in dem alle PDFs mit dem selben Änderungsdatum liegen) - PDF-Datei in o.g. Order abspeichern und nach Schema "JJJJ_LFDNR.pdf" abspeichern - Die Software die diese Schritte ausführt, muss den Pfad vorher und nachher in eine LOG-Datei speichern - Aus den Pfad-Angaben in Log-Datei können dann SQL-Statements entworfen werden mit der dann die Datenbankeinträge aktualisiert werden können. Wie kann ich hier vorgehen? Nochmals vielen Dank für jede Unterstützung. Viele Grüße EDIT: Ich habe evtl. an folgendes BATCH-Skript gedacht: @Echo off & setlocal set "Quelle=D:\START\" set "Ziel=D:\ZIEL\" for %%a in ("%Quelle%*") do ( if NOT "%%~nxa"=="%~nx0" ( Echo Verarbeite Datei "%%a" set "fdate=%%~ta" setlocal enabledelayedexpansion set "fday=!fdate:~0,2!" set "fmonth=!fdate:~3,2!" set "fyear=!fdate:~6,4!" set "folname=!fyear!_!fmonth!_!fday!" md "%Ziel%!folname!" 2>nul Echo Verschiebe Datei "%%a" nach "!folname!" move "%%a" "%Ziel%!folname!\" endlocal ) ) Aber zum einen scannt der Befehl %a keine Unterordner und eine Datei-Umbennenung sowie Protokollierung in eine Log-Datei kann es auch nicht. :-( bearbeitet 24. Mai 2014 von Adrjan Zitieren Link zu diesem Kommentar
daabm 1.366 Geschrieben 24. Mai 2014 Melden Teilen Geschrieben 24. Mai 2014 Batch? Ja, geht - aber mühsam, wie Du selbst schon festgestellt hast... BTW: "for /r" -> rekursiv. Und nach dem "move" bräuchtest Du noch einen "rename". Und dafür wiederum einen Zähler für das Jahr. Hmpf :rolleyes: Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 24. Mai 2014 Melden Teilen Geschrieben 24. Mai 2014 Ich würde dafür Powershell anschauen. Das verschieben in bestimmte Unterorder ist in jedem Fall kein Problem und sehr einfach umzusetzen. Des weiteren kannst du mit Powershell auf einen Dot.Net Provider für die Datenbank zugreifen und die Datenbank anpassen. Habe das für SQL Server und Oracle schon genutzt. Mit MySql wird das sicher auch gehen. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.