Änderungsdatum und Uhrzeit von Files verändern

W

willfried

Aktives Mitglied
Thread Starter
Dabei seit
30.01.2005
Beiträge
136
Reaktionspunkte
0
Hallo Forum,
Wie kann ich in AppleScript allen Files in einem Folder ein neues Änderungsdatum geben? Mit folgendem Code bekomme ich leider einen Stack Overflow in der fett gedruckten Zeile:

tell application "Finder" to set the source_folder to (folder of the front window) as alias

set the item_list to list folder source_folder without invisibles

repeat with i from 1 to number of items in the item_list
set this_item to item i of the item_list
set this_item to (source_folder & this_item) as alias
set modification date of this_item to (current date)
end repeat
 
Ich glaube das hat damit zu tun, daß Du versuchst das Datum durch "Apple Script selbst" zu verändern und nicht durch den "Finder", in dessen Bereich solche Aufgaben besser aufgehoben sind. Wenn Du Dein Script wie folgt veränderst, sollte es klappen:
Code:
tell application "Finder"
	set the source_folder to (folder of the front window) as alias
	set the item_list to list folder source_folder without invisibles
	repeat with i from 1 to number of items in the item_list
		set this_item to item i of the item_list
		set this_item to ((source_folder & this_item) as string) as alias
		set modification date of this_item to (current date)
	end repeat
end tell

Good scripting
Farid
 
Hallo Farid,
Danke für den Tip! Ich habe den Code angepasst, und jetzt klappt es fast. Ich habe festgestellt, dass ich das Erstellungsdatum ändern muss. (Die Änderung des Änderungsdatums hat leider nicht den gewünschten Effekt gebracht.) Wie mache ich denn das? "creation date" ist leider nur r/o :(

By the way: kennst Du eine gute Referenz für AppleScript? AppleScript von Goldstein ist mir zu unübersichtlich. Programmieren in C / C++ und VisualBasic bin ich gewohnt. Ich suche ein richtig gutes Buch zu AppleSkript. Es darf ruhig ein "Wälzer" sein.
 
Zuletzt bearbeitet:
Ciao Willfried,
als Buch kann ich Dir guten Gewissens "AppleScript - The definitive guide" von Matt Neuburg empfehlen: http://www.oreilly.com/catalog/applescpttdg/index.html .
Was Dein Script-Problem angeht: wenn ich mich recht erinnere ist "creation date" read-only, d.h. via AppleScript nicht veränderbar. Eventuell läßt sich das umgehen, indem man Kopien der Files anlegt. Sitze in diesem Moment vor einem Win-Rechner und kann es deshalb nicht überprüfen :rolleyes:

Frohes scripten
Farid
 
Die unerschoepfliche Fundgrube macscripter.net hat eine Loesung, allerdings brauchst Du dafuer Apple's Developer Tools (aber wenn Du in C/C++ programmierst hast Du die ja wahrscheinlich eh): http://bbs.applescript.net/viewtopic.php?id=15393

Du muesstest dann in Deinem "repeat loop"
a) das alias this_item in einem Unix-Pfad konvertieren
Code:
set this_item to POSIX path of this_item
b) ein Shell-Script einbauen, dass diesen Pfad benutzt und das Erstellungsdatum aendert
Code:
do shell script "/Developer/Tools/SetFile -d 02/04/2006 " & this_item
Evtl. moechtest Du vorher (current date) in das richtige Format fuer das Shell-Script uebersetzen, das ist recht einfach mit Apple Script's date & time commands, die ich jetzt aber nicht zur Hand habe.

Good scripting
Farid
 
oder so...

tell application "Finder"

set sel to every item of folder of the front window

repeat with f in sel

try
set modification date of f to (current date)
on error errMsg number errNum from errFrom partial result errResult to errTo
display dialog ("Ooops: " & return & errMsg & "=> " & errNum)
end try

end repeat

end tell
 
Ich habe bei macscripter.net (Danke, Farid) das Tool Miana gefunden. Damit verändert man das Creation Date sehr einfach. Allerdings habe ich immer noch nicht den gewünschten Effekt erzielt. :(

Ich muss an das Erstellungsdatum im .jpg File heran und es ändern. Hintergrund: Ich habe eine Menge Urlaubsfotos bei der Entwicklung vom Negativfilm auch auf CD brennen lassen. Jedes Foto hat dann als Erstellungsdatum den Moment, in dem es von der Maschine erstellt wurde.
Da es sich um mehrere Filme handelt, die in beliebiger Reihenfolge von der Maschine bearbeitet worden sind, kommt es vor, dass der Zeitstempel von den Bildern des Films2 zeitlich vor den Bildern von Film1 liegt. Fügt man nun in iPhoto alle Bilder in einen Film ein, dann sind die Bilder nicht in der richtigen Reihenfolge. Ich musste also als Zwischenlösung für jeden Film einen eigenen Film in iPhoto anlegen, damit zumindest auf diesem Weg die Reihenfolge stimmt. Aus Übersichtsgründen möchte ich aber alle Fotos in einem iPhoto Film ablegen.

Aus Sicherheitsgründen möchte ich nun nicht mit Skripten in iPhoto direkt arbeiten. Auch dort ist das Datum eines Fotos (date) nur r/o.

Der sichere Weg: Bilder exportieren, mit Skript bearbeiten und dann in iPhoto importieren. Wenn ihr also einen Tip habt, wie ich das Erstellungsdatum und Uhrzeit in einem .jpg File ändern kann, dann hilft mir das sehr.
 
Ciao Willfried,
wenn ich Dein Problem richtig verstanden habe, mußt Du an die EXIF-Daten heran, die als Metadaten in den Fotos abgespeichert sind.
Ohne Spezialsoftware zu bemühen kannst Du das mit "Image Events" bewerkstelligen (die "Image Events" sind eine Art OS X interner Foto-Editor, ohne eigenes Interface, d.h. fast nur über AppleScript steuerbar).

Im folgenden Beispiel, das am besten als "Application" abgespeichert wird, mußt Du die Imagefiles auf das Icon der Anwendung ziehen, dann wird das EXIF-Erstellungsdatum eingelesen, umformatiert und vom Finder als Modification Date des jeweiligen Files gespeichert, so daß Du wenn Du nach Bearbeitungsdatum sortierst die korrekte Reihenfolge haben solltest.
Alles ohne Gewähr, also besser erstmal mit einer Kopie der Fotos ausprobieren ;)

Code:
property myDate : (current date) -- globale Variabile dient als Base dür die Datumsmanipulationen

on open myFiles
	repeat with f in myFiles
		
		set oldTID to text item delimiters -- siehe letzte Zeile
		set text item delimiters to " " -- text item delimiters werden verändert, um die Exif-Informationen zu filtern
		
		tell application "Finder"
			set f to f as alias
		end tell
		
		tell application "Image Events"
			set myImage to open f
			set m to metadata tags of myImage
			repeat with tag in m
				if name of tag = "creation" then
					set tagValue to value of tag
					exit repeat
				else
					-- Im Fall nicht korrekter EXIF-Informationen:
					set tagValue to "1904:12:31 00:00:00"
				end if
			end repeat
			close myImage
		end tell
		
		set dateTime to text items of tagValue -- z.B.: {"2005:12:09", "16:00:00"}
		set exifDate to item 1 of dateTime -- z.B.: "2005:12:09"
		set exifTime to item 2 of dateTime -- z.B.: "16:00:00"
		
		set text item delimiters to ":" -- text item delimiters werden verändert, um Datum und Uhrzeit zu filtern
		
		set exifDate to text items of exifDate -- z.B.: {"2005", "12", "09"}
		set exifTime to text items of exifTime -- z.B.: {"16", "00", "00"}
		-- Die einzelnen Elemente werden zu einem Finder-tauglichen Datum zusammengefügt:
		set year of myDate to item 1 of exifDate
		set month of myDate to item 2 of exifDate
		set day of myDate to item 3 of exifDate
		set time of myDate to 0
		set t to ((item 1 of exifTime) * 3600) + (item 2 of exifTime) * 60 + (item 3 of exifTime)
		
		set myDate to (myDate + t)
		
		tell application "Finder"
			set modification date of f to myDate
		end tell
		
		set text item delimiters to oldTID -- die text item delimiters werden in den Anfangszustand zurückversetzt
		
	end repeat
end open

Good scripting
Farid
 
Danke für den Hinweis. Ich habe in der Zwischenzeit ein einfaches Hilfsmittel in iPhoto gefunden: unter Fotos > Stapel ändern ... kann man das Datum und die Uhrzeit für die markierten Bilder nach eigenen Wünschen ändern.
Warum kompliziert, wenn es auch einfach geht :rolleyes:
 
Das ändert aber nicht die Dateinamen der Fotos auf der Platte, sondern nur den Titel in iPhoto intern.

Wie kann ich die Fotos also auf der Platte ändern?
 
was konkret soll denn geändert werden? Wenn es um den Dateinamen geht, dann befinden sich hier im threat einige AppleScript-Schnipsel dazu. Die Beiträge von chebfarid nehmen Themen unter die Lupe, die speziell auf .jpg zugeschnitten sind.
By the way: das von chebfarid empfohlene Buch ist zu empfehlen.
 
chebfarid schrieb:
Im folgenden Beispiel, das am besten als "Application" abgespeichert wird, mußt Du die Imagefiles auf das Icon der Anwendung ziehen, dann wird das EXIF-Erstellungsdatum eingelesen, umformatiert und vom Finder als Modification Date des jeweiligen Files gespeichert, so daß Du wenn Du nach Bearbeitungsdatum sortierst die korrekte Reihenfolge haben solltest.
Alles ohne Gewähr, also besser erstmal mit einer Kopie der Fotos ausprobieren ;)

Code:
bla

Good scripting
Farid

Einfach perfekt. Einfacher kann man die gewünschten Änderungen als User gar nicht erhalten.

Dankeschön! Hat mir sehr weitergeholfen und wird mir noch weiterhelfen.

Grüße Daniel
 
Zurück
Oben Unten