Ich habe eine Sammlung von Fotos, die keine Datumsinformationen enthalten. Sie haben keine Exif-Daten und die Änderungsdaten der Datei sind alle identisch. Die einzige Sequenz befindet sich im Dateinamen: image-0001.jpg, image-0002.jpg usw.
Jetzt möchte ich diesen Dateien (vorzugsweise in Exif) ein Datum zuweisen, die alle 10 Sekunden voneinander entfernt sind. Ich bin nicht so interessiert daran, wie genau das Basisdatum und die Basiszeit aussehen werden, nur dass sie alle 10 Sekunden inkrementieren. Das erste Bild erhält also 0:00:00, das zweite 0:00:10, das dritte 0:00:20 usw.
Ist dies mit ExifTool oder anderen Windows-Anwendungen möglich? Wir sprechen über mehrere tausend Bilder, daher kommt es nicht in Frage, dies manuell zu tun ;-)
$filesequence
eine magische Exiftool-Variable. in junkyardsparkle's$file
ist eine Bash-Variable. Dies ist tragbarer; Der andere verknüpft die Zeit eher mit dem Dateinamen als mit der Reihenfolge, in der exiftool sie liest.'
vs"
signifikant ist - bei doppelten Anführungszeichen wird das$
von der Shell abgefangen und interpretiert (wie in Jens 'Antwort), aber in dieser Antwort muss es ein einfaches Anführungszeichen sein, damit es von ExifTool intern interpretiert wird.Versuchen Sie es mit Irfanview . Es ist Freeware (AFAIR) und verfügt über ein sehr flexibles Batch-Umbenennungssystem.
Ansonsten würde ich versuchen, ein Skript zu schreiben, etwas in der Art von
Die erste Zeile erstellt eine Schleife durch die Zahlen in den Dateinamen, die Sie haben, z. 00..20. Wenn Sie 1000 Bilder haben, wäre der Befehl
seq -w 0 1000
. Die Option-w
fügt den Zahlen führende Nullen hinzu.Die zweite Zeile definiert in diesem Fall das Inkrement - 10. Bisher ohne Einheiten.
Die Formatzeichenfolge in der dritten Zeile "0: 0: 0 0: 0: $ plus" definiert, was die Variable
$plus
bedeutet, in diesem Fall Sekunden. Wenn Sie Minuten wollten, würden Sie schreiben0:0:0 0:$plus:0
. Das Format ist "Jahr: Monat: Tag Stunde: Minute: Sekunde". Hier haben wir also ein 10-Sekunden-Inkrement.Dies ist ein Stapel, der in 'bash' (Linux-Shell) ausgeführt wird. Möglicherweise müssen Sie ihn an Windows anpassen oder ein Linux-Live-System verwenden, um die Konvertierung durchzuführen.
Beachten Sie, dass alle Dateien ein (identisches) Exif-Tag (DateTimeOriginal) haben sollten, bevor dies verwendet werden kann, da nur die vorhandenen Tags erhöht werden. Sie können jedoch einfach ein Tag mit einem exiftool-Befehl schreiben.
Ich habe dies mit 20 Beispieldateien getestet und die Tags wurden korrekt geschrieben.
quelle
Nun, ich habe meine Bash-Antwort nicht veröffentlicht, weil die Frage speziell nach einer Windows-Lösung gestellt wurde, aber da dies zwei andere Personen taten, habe ich mir Folgendes ausgedacht:
Vermeidet das Durcheinander mit dem Datumsbefehl. :) :)
Beachten Sie, dass in dem Teil, in dem es heißt
${file:6:4}
, die "6" den Punkt im Dateinamen darstellt, an dem die Sequenznummer beginnt, und die "4" die Länge dieser Sequenz darstellt. Wenn Ihre Dateien genau mit dem in der Frage angegebenen "image-0001.jpg, image-0002.jpg" übereinstimmen, funktioniert dies unverändert. Andernfalls passen Sie es an.quelle
Da die besten Antworten eine Nicht-Windows-Syntax verwenden, werde ich hier den für Microsoft Windows konvertierten Code veröffentlichen.
@ StarGeek-Lösung, sehr schnell und einfach:
Legen Sie zunächst einen Basiszeitstempel für alle Bilder fest:
(
DIR
ist der Name des Ordners, der alle Bilder enthält.)Weisen Sie dann inkrementelle Zeitstempel zu:
(In diesem Fall
3
ist die Anzahl der Sekunden, die Sie zwischen den einzelnen Fotos benötigen.)Beachten Sie die Verwendung von doppelten Anführungszeichen. Dies ist auf Windows-Systemen erforderlich.
@ junkyardsparkle-Lösung, die anfangs die einzige war, mit der ich arbeiten konnte:
Dies erfordert aufgrund der beteiligten Befehle das Erstellen einer Batchdatei.
quelle