1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Zugriff auf die aufgerufene Datei?

Dieses Thema im Forum "AppleScript" wurde erstellt von Wikinator, 04.07.06.

  1. Wikinator

    Wikinator Adams Parmäne

    Dabei seit:
    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"?
     
  2. Schomo

    Schomo Russet-Nonpareil

    Dabei seit:
    15.11.04
    Beiträge:
    3.756
    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
     
  3. Wikinator

    Wikinator Adams Parmäne

    Dabei seit:
    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
     
  4. pi26

    pi26 Adams Parmäne

    Dabei seit:
    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
     
  5. Wikinator

    Wikinator Adams Parmäne

    Dabei seit:
    21.08.04
    Beiträge:
    1.297
    Hallo pi26,

    hm, wie kann ich XY zu der Datei setzen, von der das Programm aus gestartet wurde? Ich habe den Namen ja nicht vorher statisch.

    ich müsste eigentlich hier nur fileXY bekommen. Geht das?
     
  6. pi26

    pi26 Adams Parmäne

    Dabei seit:
    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
     
    #6 pi26, 05.07.06
    Zuletzt bearbeitet: 05.07.06
  7. Wikinator

    Wikinator Adams Parmäne

    Dabei seit:
    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?
     
  8. pi26

    pi26 Adams Parmäne

    Dabei seit:
    17.12.04
    Beiträge:
    1.297
    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...
     
  9. Wikinator

    Wikinator Adams Parmäne

    Dabei seit:
    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.
     
  10. Wikinator

    Wikinator Adams Parmäne

    Dabei seit:
    21.08.04
    Beiträge:
    1.297
    *hochschieb*
     
  11. michaelbach

    michaelbach Roter Seeapfel

    Dabei seit:
    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.
     
  12. Wikinator

    Wikinator Adams Parmäne

    Dabei seit:
    21.08.04
    Beiträge:
    1.297
    genau diesen Namen meinte ich. Allerdings dazu noch den Pfad im Dateisystem. Geht das?
     
  13. michaelbach

    michaelbach Roter Seeapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.109
    das ist noch einfacher:
    und wer löst meine Objective C-Probleme ;)?
     
    Wikinator gefällt das.
  14. Wikinator

    Wikinator Adams Parmäne

    Dabei seit:
    21.08.04
    Beiträge:
    1.297
    danke. genau das wars.
     

Diese Seite empfehlen