Zeitstempel aus Dateinamen als Erstellungsdatum extrahieren

German support forum

Moderators: sheep, Hacker, Stefan2, white

Post Reply
Gauner
Junior Member
Junior Member
Posts: 54
Joined: 2004-08-06, 12:01 UTC
Location: Berlin

Zeitstempel aus Dateinamen als Erstellungsdatum extrahieren

Post by *Gauner » 2014-01-05, 09:48 UTC

Hallo,

ich habe einige Dateien mit einem Datums-/Zeitstempel im Namen. Auf dieses Datum würde ich gern das Erstellungsdatum der Datei setzen. Gibt es dafür eine Möglichkeit in TC? Mglw. mit einem Plugin...?

Alternativ: Geht es ohne TC sonst irgendwie unter Ubuntu? Ich weiß, das würde dann nicht hierher gehören, aber bin für jegliche Tipps dankbar.

Viele Grüße!

User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 38451
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) » 2014-01-05, 11:46 UTC

Ja, dazu können Sie Dateien-"Dateiattribute ändern" verwenden, und zwar über "Mehr Attribute". Das Datum können Sie mit Hilfe von Pluginfeldern aus dem Namen extrahieren. Dabei müssen Sie es genau so erzeugen, wie es vom Datumsfeld benötigt wird - also wenn das Datumsfehld Tag.Monat.Jahr verlangt, müssen Sie es genau so einfügen.

Beispiel Dateiname:
20120131-text.txt

[=tc.name:7-8].[=tc.name:5-6].[=tc.name:1-4]

Am einfachsten ist es, das im Umbenenntool zusammenzustellen, weil es da eine Vorschau gibt, und anschliessend den fertigen String ins "Dateiattribute ändern" zu kopieren.
Author of Total Commander
http://www.ghisler.com

User avatar
Stefan2
Power Member
Power Member
Posts: 2676
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Ändere Datum mit Teil vom Dateinamen mittels PowerShell

Post by *Stefan2 » 2014-01-05, 15:24 UTC

Oder mit PowerShell.


Hier mal ein Button für die TC buttonbar (Auswählen, Kopieren, auf die Buttonbar einfügen)

Das Datum wird per RegEx aus dem Dateinamen extrahiert, egal an welcher Stelle es im Namen steht.

Hinweise:

- das regex pattern zum extrahieren des Datums muss an das Muster im Dateinamen angepasst werden.
Das hier benutzte matcht auf YYYY-MM-DD
Test Dateinamen:
* readme2012-12-11.txt
* Origin2010-08-19Source.txt
* changes 1997-09-11.txt
* order 1996-03-04.txt
* 1988-03-25 CORE.NFO.txt

- ebenso kann man die Uhrzeit "12:33" und das gewünschte zu ändernde Attribute an seine Vorlieben anpassen.
* CreationTime
* LastAccessTime
* LastWriteTime


- für TC musste ich die Quotes escapen ( " > """ ) und ebenso das Prozentzeichen ( % > %% ).

Code: Select all

TOTALCMD#BAR#DATA
powershell
gci|?{$_.Name -match """\d{4}-\d{2}-\d{2}"""}|%%{$d=$matches[0]+""" 12:33""";$_.LastWriteTime=$d;$_.CreationTime=$d}
%commander_path%\WCMICONS.DLL,7



-1

- - -

Im Original sieht das obige PowerShell Kommando so aus:

gci|?{$_.Name -match "\d{4}-\d{2}-\d{2}"}|%{$d=$matches[0]+" 12:33";$_.LastWriteTime=$d;$_.CreationTime=$d}



Beziehungsweise voll ausgeschrieben:
gci                   | ?                     {$_.Name -match "\d{4}-\d{2}-\d{2}"}  | %                     { $d       =$matches[0] + " 12:33"; $_.LastWriteTime = $d       ; $_.CreationTime=$d        }
Get-ChildItem | Where-Object{ $_.Name -match "\d{4}-\d{2}-\d{2}" } | Foreach-Object { $date = $matches[0] + " 12:33"; $_.LastWriteTime = $date; $_.CreationTime = $date; }




HTH? :D

Gauner
Junior Member
Junior Member
Posts: 54
Joined: 2004-08-06, 12:01 UTC
Location: Berlin

Post by *Gauner » 2014-01-05, 16:27 UTC

ghisler(Author) wrote: [=tc.name:7-8].[=tc.name:5-6].[=tc.name:1-4]
Supi, diese Syntax hatte mir gefehlt.

Vielen Dank, hat geklappt.

User avatar
Stefan2
Power Member
Power Member
Posts: 2676
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 » 2017-01-04, 13:08 UTC

mrstefan wrote:Hallo,

ich habe einige Videos und Fotos bei denen leider das Erstellt Datum mit dem aktuellen Datum bzw. falschen Datum versehen ist.

Im Dateinamen habe ich jedoch die Infos komplett, da ich diese immer umbenenne - zum Beispiel:
20160119151009.jpg

Also der 19.01.2016 Uhrzeit 15:10:09

Kann bzw. wie kann ich mit TC das Erstellt Datum und Uhrzeit auf das/die im Dateinamen ändern?

Zitat Ghisler: http://ghisler.ch/board/viewtopic.php?t=39137

Ja, dazu können Sie Dateien-"Dateiattribute ändern" verwenden, und zwar über "Mehr Attribute".

Das Datum können Sie mit Hilfe von Pluginfeldern aus dem Namen extrahieren.
Am einfachsten ist es, das im Umbenenntool zusammenzustellen, weil es da eine Vorschau gibt,
und anschliessend den fertigen String ins "Dateiattribute ändern" zu kopieren.


Dabei müssen Sie die Datums-Zeichenkette genau so zusammenstellen,wie es vom Datumsfeld benötigt wird,
also wenn das Datumsfeld "Tag.Monat.Jahr HH:MM:SS" verlangt (wie in Deutschland üblich),
müssen Sie es genau so in dieser Reihenfolge einfügen.


- - -

Beispiel Dateiname: 20120131-text.txt (2012 01 31 >>> 31.01.2012 00:00:00)
[=tc.name:7-8] >>> extrahiert 31
[=tc.name:5-6] >>> extrahiert 01
[=tc.name:1-4] >>> extrahiert 2012


Anwendung:

Dateien > "Dateiattribute ändern"
"Mehr Attribute" anklicken.
[X] Pluginattribute ändern
Plugin: tc ||   Eigenschaft: Erstelldatum ||   Wert: [=tc.name:7-8].[=tc.name:5-6].[=tc.name:1-4]
[OK]


- - -


Beispiel Dateiname: 20160119151009.jpg (2016 01 19 15 10 09 >>> 19.01.2016 15:10:09)
[=tc.name:7-8] >>> extrahiert 19
[=tc.name:5-6] >>> extrahiert 01
[=tc.name:1-4] >>> extrahiert 2016
[=tc.name:9-10] >>> extrahiert 15
[=tc.name:11-12]>>> extrahiert 10
[=tc.name:13-14]>>> extrahiert 09


Anwendung:

Dateien > "Dateiattribute ändern"
"Mehr Attribute" anklicken.
[X] Pluginattribute ändern
Plugin: tc ||   Eigenschaft: Erstelldatum ||   Wert: [=tc.Name:7-8].[=tc.Name:5-6].[=tc.Name:1-4] [=tc.Name:9-10]:[=tc.Name:11-12]:[=tc.Name:13-14]
[OK]


- - -

Oder auch:   tc || Eigenschaft: Änderungsdatum




.
Inofficial FAQs || WIKI (Deu/Eng) || TC Home (What's new? // FAQ // Download // Order // Addons // Tools // Plugins)
Erst wenn der letzte Baum gefällt oder die letzte Biene verendet ist, werden die Leute verstehen warum Umweltschutz wichtig ist.

mrstefan
Junior Member
Junior Member
Posts: 11
Joined: 2011-07-06, 13:55 UTC

Post by *mrstefan » 2017-01-04, 14:31 UTC

Hallo (auch) Stefan,

erst mal danke - es funktioniert!

Eine kleine Änderung musste ich vornehmen, vielleicht interessant falls jemand das selbe Problem hat - Datum und Zeit müssen als zwei Attribute importiert/geändert werden:

Dateien > "Dateiattribute ändern"
"Mehr Attribute" anklicken.
[X] Pluginattribute ändern
Plugin: tc || Eigenschaft: Erstelldatum || Wert: [=tc.Name:7-8].[=tc.Name:5-6].[=tc.Name:1-4]
"Mehr Attribute" anklicken.
Plugin: tc || Eigenschaft: Erstellzeit || Wert: [=tc.Name:9-10]:[=tc.Name:11-12]:[=tc.Name:13-14]
[OK]

Danke u VG Stefan

User avatar
Stefan2
Power Member
Power Member
Posts: 2676
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 » 2017-01-04, 15:06 UTC

mrstefan wrote: - Datum und Zeit müssen als zwei Attribute importiert/geändert werden:
Nein.

Alles kann auf einmal in einem String für Erstell- oder Änderungsdatum geschrieben werden.

Nur zwischen Datum und Zeit muss ein Leerzeichen stehen:

"dd.mm.yyyy HH:MM:SS"
oder
"dd.mm.yyyy HH:MM"
oder
"dd.mm.yyyy HH"
oder
"dd.mm.yyyy"

( Deutsches Zeitformat, siehe HKEY_CURRENT_USER\Control Panel\International\sShortDate + sShortTime )


 
Inofficial FAQs || WIKI (Deu/Eng) || TC Home (What's new? // FAQ // Download // Order // Addons // Tools // Plugins)
Erst wenn der letzte Baum gefällt oder die letzte Biene verendet ist, werden die Leute verstehen warum Umweltschutz wichtig ist.

mrstefan
Junior Member
Junior Member
Posts: 11
Joined: 2011-07-06, 13:55 UTC

Post by *mrstefan » 2017-01-04, 15:22 UTC

Tatsächlich, ich hatte es vorher bestimmt ein paar mal probiert und kam immer eine Fehlermeldung und daher hatte ich es getrennt.

Jetzt noch mal probiert und es ging sofort, warum es vorher nicht ging keine Ahnung - ich hatte es wie eben 1:1 kopiert...

Super Sache :)

Post Reply