PDA

Vollständige Version anzeigen : Dateierstellungsdatum aller Dateien in einem Verzeichnis ändern...


Ali3n
09.01.2007, 06:45
Hallo zusammen,

ich habe in einem Verzeichnis folgende Dateien:
001_2006-12-24_08-31-35.avi
Alle nach dem Muster Name_JJJJ-MM-TT_HH-MM-SS.Endung

Jetzt würde ich gerne das Datum und die Uhrzeit, die sich im Dateinamen verbirgt als Dateierstellungsdatum verwenden.

Wie würdet Ihr hier prinzipiell vorgehen? Geht das mit WSH, Access, oder mit was?

Das Teil hier (http://www.access-beispiele.tommyk-webbox.de/bsp_ds.php) wollte ich mir gerne mal anschauen, krieg es aber einfach nicht auf die Platte. Der DL funzt einfach nicht.

Hintergrund:
Ich möchte meine DV-Bänder auf den Rechner überspielen. Mit dem Programm AV-Cutty kann man die unkomprimierten AVIs in Szenen unterteilen und auch als einzelne AVIs speichern. In der nächsten Version des Programms wird es auch möglich sein, das Datum der Szene welches vom Band kommt in die Datei als Datum zu schreiben. Solange könnte ich ja vielleicht noch warten. Aber: die unkomprimierten AVIs 1:1 auf der Platte zu belassen ist speichertechnisch IMO nicht sinnvoll. Also kommt nur eine Komprimierung in Frage. Die Batchkonvertierung ist auch kein Problem. Nur wird dann ja wieder eine neue Datei erstellt und die hat dann wieder das aktuelle Datum.
Wenn die Dinger dann umgewandelt sind, möchte ich mit dem Organizer von Photoshop Elements (PSE) die Video katalogisieren. Da Videos keine EXIF-Daten wie Bilder haben, kann PSE als Ersatz das Dateidatum/Uhrzeit nehmen. Um diese Funktion sinnvoll einsetzen zu können muss natürlich das Datum der Datei entsprechend passen. PSE kann das Datum zwar auch selbst setzen, allerdings nur per Hand (ohne Textparser, etc.).

Ich würde mich über eine Hilfestellung wirklich sehr freuen. Vielleicht hat einer ja auch die Muse und schustert hier schnell was zusammen (das kann vom Gefühl her nicht viel sein).

Herzlichen Dank im Voraus für jede Hilfe.
Viele Grüße
Ali3n

Joachim Hofmann
09.01.2007, 10:24
Du brauchst eine touch.exe, z.B. bei:

http://gnuwin.epfl.ch/apps/unxutils/de/index.html

Diese kann das Dateidatum ändern.

Dann in etwa: in einer DOS-FOR-Schleife: Dateinamen extrahieren und touch zum essen geben.

Falls Du noch Interesse hast, kann ich dir einen "einfache" Batch-for-Schleife basteln.

Joachim

Ali3n
09.01.2007, 11:04
Hallo Joachim,

ich bin glaube ich zu blöd, das Teil zu installieren. Ich lad mir unxUtils runter und installiere die, aber wie starte ich die? Wo sind die? *duck*

Wenn ich das aber richtig lese, dann übernimmt der nur das aktuelle Systemdatum + Uhrzeit in die Dateieigenschaften, oder?

Die Dateinamen kann ich auch selbst extrahieren z.B. mir dir /b > files.txt
Ich kann auch unter Excel oder sonst was das Datum zusammenbasteln (aus dem Dateinamen) und das alles in eine CSV schreiben (z.B. datei1.avi;2006-12-24;09-30-31).

Wie ich das aber unter DOS in eine Schleife packe vor allem wie ich touch.exe damit füttere weiß ich leider nicht.
Ergo: Ja, ich wäre sehr dankbar für eine kleine Bastelei von Dir.

Im Voraus herzlichen Dank und viele Grüße
Ali3n

Ali3n
09.01.2007, 11:12
ok. Hab die touch.exe selbst gefunden *duck* (suchet und ihr werdet finden).
Wie aber die Syntax für einen Befehl lauten muss, kann ich der Hilfe leider nicht entlocken.
touch.exe -d ????? --date=????
Wie muss Datum/Uhrzeit übergeben werden? YYYYMMDDHHMMSS?

Ali3n
09.01.2007, 11:23
Habe soeben noch festgestellt, dass touch.exe anscheinend nicht das Erstellungsdatum neu setzt, sondern nur "access and modification times". Das wäre aber dann doch notwendig.
So nützt mit das leider nicht. :(

Joachim Hofmann
09.01.2007, 11:40
gibt mal touch --help ein.

Da steht bei mir: ua:

-t STAMP use MMDDhhmm[[CC]YY][.ss] instead of current time

Habe ich kurz aber unvollständig getestet, und das ändert (auch) das Datum.
Wenn das hinkriegbar wäre, das man genau dieses Format in einer CSV-Datei hätte, wäre man schon um einiges weiter. Also:
Ganzerdateiname;Datumsformat.
Vielleicht kann man das mit Excel hinbasteln. Wieviel Bastelarbeit das aber ist, kann ich nicht sagen.

Ali3n
09.01.2007, 12:02
das ist ja gerade mein Problem: was bedeutet MMDDhhmm[[CC]YY][.ss]??
Was ist was?
MM Month
DD Day
hh Hour
mm Minutes
CC Century
YY Year
.ss Seconds

Aber egal was ich mache, ich kriege immer "invalid date format".
Kannst Du mir vielleicht kurz ein Beispiel schicken (touch -t........)?

Danke und Grüße
Ali3n

Ali3n
09.01.2007, 12:06
egal welche Option ich verwende, es wird nie das "Erstelldatum" geändert, immer nur Geändert und Letzter Zugriff. :(

Joachim Hofmann
09.01.2007, 12:59
OK. Aber brauchst Du wirklich das Erstellungdatum und warum? In meiner bisherigen Arbeit kenne ich eigentlich nur, daß Programme (z.B. Vergleich "was ist neuer und reagiere darauf") mit dem Änderungsdatum arbeiten.

Ali3n
09.01.2007, 14:41
Ja. Ich möchte wie oben beschrieben mit Photoshop Elements meine Videos verwalten. Das Programm greift (da keine EXIF-Infos vorhanden sind) auf die Dateiattribute zurück. Da interessiert leider nur das Erstellungsdatum.
Ich bin mir zwar sicher, werde es aber trotzdem noch einmal verifizieren, ob nicht doch das Änderungsdatum ausreicht.

Nichtsdestotroz könntest Du mir vielleicht noch mal ein Beispiel zur touch.exe liefern.

Danke und Grüße
Ali3n

Joachim Hofmann
09.01.2007, 17:06
Ist halt ein komisches Format:
MonatMonatstagStundeMinutenJahrvierstellig.Sekunden

touch -t 121011042001.20 test
dir test
10.12.2001 11:04 0 test

Ein Beispiel für das Auslesen einer csv-Datei und Übergabe der Spalten an ein Programm:


Inhalt von csvdatei.txt:
Dateiname;Datumsstring
Dateiname;Datumsstring
...


Inhalt einer Batch-Datei SetzeDatum.bat

for /F "tokens=1,2 delims=;" %%i in (csvdatei.txt) do touch.exe -t %%j %%i
PAUSE

Das ist der for-Befehl, Erläuterung zu for sind in der Windows-Hilfe.

Ali3n
10.01.2007, 06:40
:grins: :grins: :grins: :grins:

Hi Joachim,

zu meiner Schande muss ich erst mal gestehen, dass das Änderungsdatum bei PSE herangezogen wird. Du hattest also recht.

Aber: Das funktioniert ja wirklich bestens. Das zusammenbasteln in Excel hat noch nicht mal 5 Minuten gedauert (mit dir /b >datei.csv unter DOS die Dateinamen in eine Datei geschrieben, in Excel geöffnet/kopiert und dann mit den Funktionen TEIL und VERKETTEN den String zusammengebastelt. Noch passend als CSV exportiert. Batchdatei angelegt. Läuft absolut problemlos.
Einzige Besonderheit: Das System hat dann z.B. bei Dateien, deren Datum in der Sommerzeit liegt, eine Stunde abgezogen. Warum auch immer.

Nochmals herzlichsten Dank.
Viele Grüße
Ali3n