• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Zugriff auf die aufgerufene Datei?

Wikinator

Adams Parmäne
Registriert
21.08.04
Beiträge
1.297
Hallo,

ich wollte ein kleines AppleScript basteln, dass auf einen bestimmten Datei-Typen gelegt wird und beim öffnen einer solchen Datei etwas bestimmtes macht. Wie kann ich dabei auf den Namen der aufgerufenen Datei zugreifen?
Also z.B.: der Dateityp sei ".ich" und die Datei "Du.ich" wird doppelgeklickt -> das Script startet -> wie bekommt das Script nun den namen "Du.ich"?
 

Schomo

Zehendlieber
Registriert
15.11.04
Beiträge
4.118
on GetFileInfo(myFile) vielleicht? Was willst du denn mit dem File machen?

Als Beispiel ein Script, das ich im Filemaker mal benutzt habe, mit dessen Hilfe ich alle Infos wie Type und Creator etc. aus einer Datei raushole und dann in meine Datenbank eingesetze. Vielleicht hilft es ja ein bischen weiter. Leider ist Logic jetzt nicht mehr Scriptfähig und somit hatte sich meine Sounddatenbank erledigt :(

Code:
-- Hier holt sich FM die Fileinfos

on GetFileInfo(myFile)
    try
        set myFileInfo to info for myFile
        tell application "FileMaker Pro"
            set cell Filename_Cell of last record of document myDatabase to name of myFileInfo as text
            set cell Erstellungsdatum_Cell of last record of document myDatabase to creation date of myFileInfo as text
            set cell Modifikation_Cell of last record of document myDatabase to modification date of myFileInfo as text
            set cell Creator_Cell of last record of document myDatabase to file creator of myFileInfo as text
            set cell Type_Cell of last record of document myDatabase to file type of myFileInfo as text
            set cell Gross_in_KB_Cell of last record of document myDatabase to size of myFileInfo as number
            set cell Pfad_Cell of last record of document myDatabase to myFile as text
        end tell
    on error

    end try
end GetFileInfo
Gruß Schomo
 

Wikinator

Adams Parmäne
Registriert
21.08.04
Beiträge
1.297
mit der Datei selber möchte ich nichts großes machen.
Ich habe nun einen einfachen Code, der allerdings nicht funktioniert (nichts wird ausgegeben):
Code:
on GetFileInfo(myFile)
	try
		set myFileInfo to info for myFile
		display dialog name of myFileInfo as text
	on error
		
	end try
end GetFileInfo
 

pi26

Adams Parmäne
Registriert
17.12.04
Beiträge
1.297
Wer nicht immer im Funktionsverzeichnis nachsehen will kann sich im Ergebinisfenster des Skripteditors die Felder bestimmter Objekte ansehen z.B.

tell application "Finder"
return properties of item "Macintosh HD:XY"
end tell

retourniert:

{class:document file, name:"aaa.pdf", index:1, displayed name:"aaa.pdf", name extension:"pdf", extension hidden:false, container:startup disk of application "Finder", disk:startup disk of application "Finder", position:{-1, -1}, desktop position:missing value, bounds:{-33, -33, 31, 31}, kind:"PDF-Dokument", label index:0, locked:false, description:missing value, comment:"", size:1.923679E+6, physical size:1.92512E+6, creation date:date "Freitag, 1. Januar 1904 1:00:00 Uhr", modification date:date "Samstag, 14. Mai 2005 22:38:06 Uhr", icon:missing value, URL:"file://localhost/aaa.pdf", owner:"geri", group:"admin", owner privileges:read write, group privileges:read write, everyones privileges:read write, file type:missing value, creator type:missing value, stationery:false, product version:"", version:""}

Damit wird klar, dass es für das File-Objekt jeweils die gegebenen Felder ansprechbar sind. Im Fall von Wikinator ist wohl das Feld "file type" von Interesse.
Dieses ist idealerweise auf eine Kennung z.B. "EPSF" gesetzt. Leider kann das Feld über den Eintrag "missing value" auch unbelegt sein -- dann sollte man über den Dateitypanhang eine Identifikation versuchen.
Die einfache Abfrage über das vorgesehene Feld kann z.B. so erfolgen:

tell application "Finder"
if file type of file "HD:fileXY" is "EPSF" then

enf if
end tell

mfg pi26
 

Wikinator

Adams Parmäne
Registriert
21.08.04
Beiträge
1.297
Hallo pi26,

pi26 schrieb:
Wer nicht immer im Funktionsverzeichnis nachsehen will kann sich im Ergebinisfenster des Skripteditors die Felder bestimmter Objekte ansehen z.B.

tell application "Finder"
return properties of item "Macintosh HD:XY"
end tell
hm, wie kann ich XY zu der Datei setzen, von der das Programm aus gestartet wurde? Ich habe den Namen ja nicht vorher statisch.

pi26 schrieb:
Die einfache Abfrage über das vorgesehene Feld kann z.B. so erfolgen:

tell application "Finder"
if file type of file "HD:fileXY" is "EPSF" then
ich müsste eigentlich hier nur fileXY bekommen. Geht das?
 

pi26

Adams Parmäne
Registriert
17.12.04
Beiträge
1.297
Entweder du willst den Namen des Skripts verändern, dann:

Der Pfad auf das script wird über "path to me" ermittelt.

set mypath to path to me
tell application "Finder"
set name of mypath to name of mypath & "XY"
end tell

oder du willst die Namen aller Finderobjekte, die auf das "Skriptdroplet" bewegt wurden, ändern:

on open fliste
repeat with theitem in fliste
set name of theitem to name of theitem & "XY"
end repeat
end open
 
Zuletzt bearbeitet:

Wikinator

Adams Parmäne
Registriert
21.08.04
Beiträge
1.297
hm, ein:
Code:
set mypath to path to me
display dialog "Hello"
display dialog name of mypath
tell application "Finder"
	set name of mypath to "andererName"
end tell
beendet sich direkt nachdem ich eine Datei mit "Öffnen mit.... dem Script" geöffnet habe. Selbst "Hello" wird nicht mehr ausgegeben. Was mach ich falsch?
 

pi26

Adams Parmäne
Registriert
17.12.04
Beiträge
1.297
Wikinator schrieb:
beendet sich direkt nachdem ich eine Datei mit "Öffnen mit.... dem Script" geöffnet habe. Selbst "Hello" wird nicht mehr ausgegeben. Was mach ich falsch?

du hast das falsche Betriebssystem (hier 10.4.6) und/oder du sicherst das ganze nicht zuerst als Programm, sondern testest aus dem Skripteditor heraus. Wie auch immer vermutlich willst du ohnehin die zweite Variante, die ich unten inzwischen ergänzt habe...Auch das muss man natürlich zuerst als Programm sichern, bevor man Dateiobjekte draufdroppen kann...
 

Wikinator

Adams Parmäne
Registriert
21.08.04
Beiträge
1.297
ich habe 10.4.7 und habe das Script vorher schon als "Application" abgespeichert. Eigentlich will ich folgendes machen (nicht den Namen der Datei verändern):
Rechtsklick auf eine Datei -> öffnen mit -> dem Script -> kurz etwas ausgeben -> den namen (und kompletten Pfad) der Datei mit einem Terminal-Befehl verknüpfen.
 

michaelbach

Roter Seeapfel
Registriert
05.01.04
Beiträge
2.109
wenn ich Dich richtig verstehe sollte folgendes gehen:
Code:
on open theItems
	repeat with i from 1 to the count of theItems
		set theItem to item i of theItems
		set the theItemInfo to info for theItem
		display dialog name of theItemInfo
	end repeat
end open
und, wie Du's ja gemacht hast, als Application abspeichern. Zum Ausprobieren einfach die Zieldatei auf dieses Droplet schieben. Von dem langen info-record habe ich hier nur den Namen ausgegeben.

Die repeat-Schleife ist für den Fall dass man mehr als 1 Datei drauf geschoben hat.
 

Wikinator

Adams Parmäne
Registriert
21.08.04
Beiträge
1.297
genau diesen Namen meinte ich. Allerdings dazu noch den Pfad im Dateisystem. Geht das?