2017-09-21 1 views
0

Ich versuche, ein AppleScript für eine Tastatur Maestro Macro zu schreiben, die den Bilderordner einer Kamera SD oder CF-Karte in einem vorhandenen Finder-Fenster öffnet. Dies ist mein aktueller Code, der das gemountete Volume öffnet.Öffnen Sie einen nicht spezifizierbaren Ordner mit applescript

tell application "Keyboard Maestro Engine" 
    set KMVarPath to get value of variable "path" 
end tell 



set the_string to "/Volumes/" & KMVarPath 
set the_path to (POSIX file the_string) as string 

tell application "Finder" 
    activate 
    if window 1 exists then 
     set target of window 1 to the_path 
    else 
     reveal the_path 
    end if 
end tell 

Das Problem ist, dass diese Ordner genannt werden, dh 276ND2XS oder 105ND800. Ich möchte das 'Suffix' (ND2XS/ND800) angeben und den Ordner mit der höchsten 'Präfix'-Nummer öffnen.

Gibt es eine Möglichkeit, das zu tun?

Und gibt es eine Möglichkeit zu überprüfen, ob das Volumen eine SD- oder CF-Karte ist? Oder muss ich über den Namen (NIKON D2XS/NIKON D800) prüfen?

Antwort

0

Ich empfehle Ihnen, nach Shell-Befehl zu suchen: system_profiler SPStorageDataType Sie können es in einem "do Shell-Skript" -Befehl in Ihrem AppleScript verwenden. Dieser Befehl gibt Ihnen unter anderem den Namen aller verbundenen Speichertypen (USD, SD-Karte, Festplatte), den Mount-Punkt (Beispiel/Volumes/myDisk), den Namen des physischen Laufwerks und den Mediennamen sowie das Protokoll (USB , SATA, ATA, ...). Ich habe keine CF-Karte zu testen, aber es sollte Ihnen eine Möglichkeit geben, zu erkennen. Als Beispiel, wenn ich eine SD-Karte benutze, ist der Medienname "APPLE SD Card Reader Media".

Wenn Sie das Volumen kennen, können Sie den Ordner mit höchsten Zählernamen erhalten:

set the_path to choose folder -- this is just for my test ! replace by your path "Volumes:..." as alias 

set the_Folder to "" 
set the_Highest to 0 
tell application "Finder" 
set my_List to name of every folder in the_path whose (name contains "D2XS") or (name contains "ND800") 
repeat with a_folder in my_List 
    try 
     set the_Num to (text 1 thru 3 of a_folder) as integer 
    on error 
     set the_Num to 0 
    end try 
    if the_Num > the_Highest then 
     set the_Highest to the_Num 
     set the_Folder to a_folder 
    end if 
end repeat 
end tell 

log "num=" & the_Num 
log "fodler=" & (the_Folder) 
+0

Dank für die Informationen. Aber meine Hauptfrage war, ob ich irgendwie den DCIM-Unterordner xxxND800 mit der höchsten Nummer angeben kann. – payun

+0

Sorry, ich missverstanden. Ich habe meine Antwort mit kleinem Code aktualisiert, um die höchste Ordnernummer zu erhalten. Die Leistung ist in Ordnung, solange die Anzahl der Ordner angemessen ist (<200) – pbell

Verwandte Themen