Zeitstempel aus Dateinamen als Erstellungsdatum extrahieren

German support forum

Moderators: white, Hacker, Stefan2

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

Zeitstempel aus Dateinamen als Erstellungsdatum extrahieren

Post by *Gauner »

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: 48021
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

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
https://www.ghisler.com
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Ändere Datum mit Teil vom Dateinamen mittels PowerShell

Post by *Stefan2 »

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: 59
Joined: 2004-08-06, 12:01 UTC
Location: Berlin

Post by *Gauner »

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: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 »

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




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

Post by *mrstefan »

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: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 »

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 )


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

Post by *mrstefan »

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 :)
karotte22
New Member
New Member
Posts: 1
Joined: 2020-01-01, 14:59 UTC

Re:

Post by *karotte22 »

mrstefan wrote: 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
Hallo,
vielen Dank auch von meiner Seite!
Die Kombination aus Datum und Zeit hat bei mir auf Windwos10 perfekt funktioniert!

Dateiname: 2015-08-20 18.15.11
Erstellungsdatum neu: 20.08.2015 18:15
Syntax: [=tc.Name:9-10].[=tc.Name:6-7].[=tc.Name:1-4] [=tc.Name:12-13]:[=tc.Name:15-16]:[=tc.Name:18-19]

SG Clemens
Post Reply