| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: Dateinamen für die Änderung des Dateidatums verw. ... (858 mal gelesen)
|
ADM Mitglied
 Beiträge: 9 Registriert: 07.04.2006
|
erstellt am: 07. Apr. 2006 19:53 <-- editieren / zitieren --> Unities abgeben:         
Hallo VB-Gemeinde, ich habe folgemdes Problem: Ich habe z.B. eine Datei "scene'20060315 17.25.53.jpg" und brauche die Änderung des Dateidatums und der -Uhrzeit an Hand des Strings des Filenamens. Das würde dann sein: 15.03.2006 & 17:25:53 bzw. 17:25 !!! Hintergrund: Videos mit dem Scenelyzer digitalisieren und damit super Standbilder machen. Diese tragen aber weder einen EXIF-Header noch das Dateidatum der Aufnahme - sondern das der Erstellung beim Überspielen. Einen TS gleich in das Bild einzubrennen ist der Programmierer von Scenelyzer nicht bereit. Schade! Da ich aber einen sichtbaren TS im Bild brauche wäre das eine erträgliche Sache. Anschließend brenne ich den TS, wie ich das mit den DigiCam-Bildern mache, mit dem Programm "Watermark Pro" per Batch-Mode in das Bild ein - an Hand des Datei-Datums und deren Zeit. Hat da jehmand vielleicht eine Idee? Danke schon mal im Voraus! Andreas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 07. Apr. 2006 20:30 <-- editieren / zitieren --> Unities abgeben:          Nur für ADM
Hallo Andreas, kleines einfache Beispiel: Code:
Option ExplicitPrivate Declare Function GetFileTime Lib "kernel32.dll" ( _ ByVal hFile As Long, _ ByRef lpCreationTime As FILETIME, _ ByRef lpLastAccessTime As FILETIME, _ ByRef lpLastWriteTime As FILETIME) As Long Private Declare Function SetFileTime Lib "kernel32.dll" ( _ ByVal hFile As Long, _ ByRef lpCreationTime As FILETIME, _ ByRef lpLastAccessTime As FILETIME, _ ByRef lpLastWriteTime As FILETIME) As Long Private Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" ( _ ByVal lpFileName As String, _ ByVal dwDesiredAccess As Long, _ ByVal dwShareMode As Long, _ ByRef lpSecurityAttributes As Long, _ ByVal dwCreationDisposition As Long, _ ByVal dwFlagsAndAttributes As Long, _ ByVal hTemplateFile As Long) As Long Private Declare Function SystemTimeToFileTime Lib "kernel32.dll" ( _ ByRef lpSystemTime As SYSTEMTIME, _ ByRef lpFileTime As FILETIME) As Long Private Declare Function LocalFileTimeToFileTime Lib "kernel32.dll" ( _ ByRef lpLocalFileTime As FILETIME, _ ByRef lpFileTime As FILETIME) As Long Private Declare Function CloseHandle Lib "kernel32.dll" ( _ ByVal hObject As Long) As Long Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Private Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type Private Const GENERIC_WRITE = &H40000000 Private Const OPEN_EXISTING = 3& Private Const FILE_SHARE_READ = &H1 Private Const FILE_SHARE_WRITE = &H2 Public Sub prcChangeFiletime() Const FILENAME = "scene'20060315 17.25.53.jpg" Dim udtFileTime1 As FILETIME, udtFileTime2 As FILETIME Dim udtFileTime3 As FILETIME, udtFileTimeNew As FILETIME Dim udtLocalTime As FILETIME, udtSystemTime As SYSTEMTIME Dim dtmNewFiletime As Date, lngHandle As Long Dim dtmDate As Date, dmtTime As Date Dim strTempDate As String, strTempTime As String strTempDate = Mid$(FILENAME, InStr(FILENAME, "'") + 1) strTempDate = Left$(strTempDate, InStr(strTempDate, " ") - 1) dtmDate = CDate(Right$(strTempDate, 2) & "." & _ Mid$(strTempDate, 5, 2) & "." & Left$(strTempDate, 4)) strTempTime = Mid$(FILENAME, InStr(FILENAME, " ") + 1) strTempTime = Left$(strTempTime, 8) strTempTime = Replace(strTempTime, ".", ":") dmtTime = CDate(strTempTime) dtmNewFiletime = dtmDate + dmtTime udtSystemTime.wYear = Year(dtmNewFiletime) udtSystemTime.wMonth = Month(dtmNewFiletime) udtSystemTime.wDay = Day(dtmNewFiletime) udtSystemTime.wDayOfWeek = Weekday(dtmNewFiletime) udtSystemTime.wHour = Hour(dtmNewFiletime) udtSystemTime.wMinute = Minute(dtmNewFiletime) udtSystemTime.wSecond = Second(dtmNewFiletime) udtSystemTime.wMilliseconds = 0 SystemTimeToFileTime udtSystemTime, udtLocalTime LocalFileTimeToFileTime udtLocalTime, udtFileTimeNew lngHandle = CreateFile("C:\" & FILENAME _ , GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, _ ByVal 0&, OPEN_EXISTING, 0&, 0&) ' 1 = Erstellt , 2 = letzter Zugriff , 3 = geändert GetFileTime lngHandle, udtFileTime1, udtFileTime2, udtFileTime3 SetFileTime lngHandle, udtFileTimeNew, udtFileTime2, udtFileTime3 CloseHandle lngHandle End Sub
------------------ Gruß Nepumuk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ADM Mitglied
 Beiträge: 9 Registriert: 07.04.2006
|
erstellt am: 07. Apr. 2006 20:43 <-- editieren / zitieren --> Unities abgeben:         
Hallo Nepumuk, bin ja echt von den Socken ... Aber als Programmier-Dödel, den mal vor Jahren etwas mit Delphie rungespielt hat, muss ich doch noch mal nachfragen: Ist das jetzt für mich? oder soll ich das als Basis nehmen? Was muss ich damit machen damit das läuft? Sorry für meine Unwissenheit!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 07. Apr. 2006 20:52 <-- editieren / zitieren --> Unities abgeben:          Nur für ADM
|
ADM Mitglied
 Beiträge: 9 Registriert: 07.04.2006
|
erstellt am: 07. Apr. 2006 21:13 <-- editieren / zitieren --> Unities abgeben:         
Naja - ich muss doch die Dateinamen / Datum und Zeit auf Dateiebene bearbeiten!?, da ich mit dem Watermark Tool dann die Bilder mit dem geänderten Datum und Zeit den TS einbrennen kann. Das Progi kann die EXIF-Daten oder des Erstellungsdatun / Zeit als Variablen verwenden und brennt an Hand dieser Daten einen TS in das Bild ein. Beispiel des Ablaufs:
- kurze Videosequenzen mit Scenelyzer digitalisieren - Standbilder mit o. g. Dateinamen capturen (macht es sehr sauber und automatisch) - Dateidatum (des Capturens) in Aufnahmedatum / Zeit an Hand des Dateinamens ändern - Watermark Progi aufmachen, Verz. wählen und TS an Hand neuen Datums / Zeit einbrennen - per Batchmodus alles in einem Rutsch - Bilddoku machen und drucken oder wegmailen ... Das Hauptproblem liegt am digitalen Videoschnitt mit FireWire! Der TS wird zwar übertragen ABER NICHT angezeigt. Beim Analog-Schnitt gibt der Camcorder diesen TS mit auf dem Video aus.
Im privaten Bereich will ich auch keine TS´s auf den Bildern haben aber dienstlich wird er verlangt. Also muss ich mir was einfallen lassen! Andreas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ADM Mitglied
 Beiträge: 9 Registriert: 07.04.2006
|
erstellt am: 07. Apr. 2006 21:15 <-- editieren / zitieren --> Unities abgeben:         
|
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 07. Apr. 2006 22:05 <-- editieren / zitieren --> Unities abgeben:          Nur für ADM
Hallo Andreas, und was soll ich jetzt antworten? Du gibst mir völlig irrelevante Informationen. Also, wie stellst du dir das vor, die Dateidaten zu setzen? Mit welchem Programm? Und, bitte keine Abschweifungen was davor oder danach passieren wird, das ist für das, was das Programm machen soll, absolut nicht von Belang. ------------------ Gruß Nepumuk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ADM Mitglied
 Beiträge: 9 Registriert: 07.04.2006
|
erstellt am: 07. Apr. 2006 22:25 <-- editieren / zitieren --> Unities abgeben:         
Sorry - wir haben wohl aneinander vorbeigeredet ... Ein Bekannter sagte probiere es mal mit VB! Also ich suche ein Sript oder ein fertiges Programm mit dem ich die o.g. Dateien, die in einem Verzeichnis liegen, in einem Rutsch modifizieren kann. Beispiel: Ein kleines Programm (habe Windows XP), dem ich sage welches Verzeichnis ich bearbeiten will, und es ändert für mich das Datum und die Zeit aller Dateien in diesem Verzeichnis an Hand der Dateinamens, die Alle nach dem obigen Schema heißen. Natürlich ändern sich die Zahlen bei den Dateien. NEIN - ich habe kein Programm dafür sonst würde ich hier nicht so rumschwimmen. Mit "XnView" kann ich das z.B. machen - aber immer nur eine einzelne Datei und muss Datum und Zeit vom Dateinamen ablesen und per Hand eingeben. Die Abschweifungen sollten nur zur Hintergrundinfo dienen, denn vielleicht hat ja Jemand eine bessere Idee für die Aufgabenstellung - ist ja manchmal so. Andreas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 07. Apr. 2006 23:54 <-- editieren / zitieren --> Unities abgeben:          Nur für ADM
|
ADM Mitglied
 Beiträge: 9 Registriert: 07.04.2006
|
erstellt am: 08. Apr. 2006 01:36 <-- editieren / zitieren --> Unities abgeben:         
BINGO! So etwas suchte ich ... Klein, schlank und funktioniert super. Sehr gute Idee den ersten Namensstring "scene'" nicht festzumachen! Tolle Arbeit. ABER ich traue mich fast nicht zu erwähnen, dass das blöde Wassermark Progi, was sonst Spitze ist, auf das "Änderungsdatum" zugreift und leider nicht auf das "Erstellungsdatum" - so´n shit! Habe ich aber auch erst jetzt beim Ausprobieren gesehen. So nützt es mir nix leider . Kann man die beiden TS´s gleichsetzen oder tauschen? Auf jeden Fall vielen herzlichen Dank für Deine Arbeit und sorry für die Umstände! Andreas PS: Womit hast Du das gemacht? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 08. Apr. 2006 09:24 <-- editieren / zitieren --> Unities abgeben:          Nur für ADM
|
ADM Mitglied
 Beiträge: 9 Registriert: 07.04.2006
|
erstellt am: 08. Apr. 2006 09:35 <-- editieren / zitieren --> Unities abgeben:         
Bist´n Schatz (wenn ich das sagen darf)! Hast mir soeben mindestens 5 Stunden Arbeit erspart und für die nächsten Aufträge - nicht auszudenken! Nun kann mich der Programmierer von "Scenalyzer" mal gerne haben! Ist jetzt ´ne prima Konstellation. Nochmals vielen, vielen Dank!!! Schönes WE noch ... Andreas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ADM Mitglied
 Beiträge: 9 Registriert: 07.04.2006
|
erstellt am: 08. Apr. 2006 09:39 <-- editieren / zitieren --> Unities abgeben:         
|
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 08. Apr. 2006 09:49 <-- editieren / zitieren --> Unities abgeben:          Nur für ADM
|
ADM Mitglied
 Beiträge: 9 Registriert: 07.04.2006
|
erstellt am: 08. Apr. 2006 21:26 <-- editieren / zitieren --> Unities abgeben:         
Ist doch Wurst dass das fertige Module waren! Hast Dich halt hingesetzt und es für mich gemacht. Ich habe mich gefreut und habe das was ich brauche. Also sind Alle glücklich ... Wünsche Dir und Euch Allen ein schönes WE! Andreas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |