2017-11-22 2 views
-1

Ich habe es für zwei Tage gewesen. Also, mit Automator und Applescript, muss ich ein Volume (oder Volumes) scannen und einen Pfad zu jeder Datei, den Dateinamen plus Erweiterung, AssetID (wenn es eine gibt) und geben Sie jeden Teil in eine Komma getrennte CSV-Datei.Mit Applescript ein Volume scannen, ziehen Sie den Pfad, Dateiname und eine Nummer und geben Sie die Ergebnisse csv

Bis jetzt habe ich die Automator-Aktionen aussortiert und die meisten Applescript-Teile, aber ich bin am Ende meines Wissens. Die Pfade und Dateinamen funktionieren, aber das Extrahieren der Asset-ID (falls vorhanden) ist das Problem. Nicht jede Datei hat eine AssetID (und diejenigen, an denen ich nicht interessiert bin). Die assetID ist immer eine 10-stellige Zahl am Ende der Datei, der ein Unterstrich ("_") vorangestellt ist, so - afilename_1234567890.ext. Wie es jetzt ist, zeigt das Skript die Asset-IDs der Dateien, die es verarbeitet, aber sobald es eine Datei ohne ID erreicht, sehe ich den folgenden Fehler, "Die Aktion" AppleScript ausführen "hat einen Fehler festgestellt: Kann nicht erhalten Text 1 bis -1 von "".“Etwas munged irgendwo bekommen.

Jede mögliche Hilfe geschätzt wird stark würde.

Das Skript so weit ...

auf Laufe {Eingabe, Parameter}

-- save delimiters to restore old settings 
set savedDelimiters to AppleScript's text item delimiters 

-- set delimiters to delimiter to be used 
set AppleScript's text item delimiters to "/" 

repeat with aPath in input 

    -- set a variable to contain the "/" (POSIX) version of the files path 
    set filesPath to POSIX path of aPath 

    -- get the file name 
    set fileName to last text item of filesPath 

    -- get the file name without the extension 
    set thePrefix to text 1 thru ((offset of "." in fileName) - 1) of fileName 

    -- get the asset ID, if there is one 
    set assetID to rightStringFromRight(thePrefix, "_") 

    display dialog assetID 

    if (class of assetID) is integer then 
     -- get the path only 
     set pathOnly to ((text items 1 thru -2 of (get POSIX path of aPath)) as Unicode text) & "/" 

     -- output the path only, file name and asset ID to a comma delimited csv file 


     display dialog assetID 
    end if 
end repeat 

-- restore the old delimiter setting 
set AppleScript's text item delimiters to savedDelimiters 

Endlauf

auf rightStringFromRight (str, del)

local str, del, oldTIDs 

set oldTIDs to AppleScript's text item delimiters 

try 
    set str to str as string 
    if str does not contain del then return str 
    set AppleScript's text item delimiters to del 
    set str to str's last text item 
    set AppleScript's text item delimiters to oldTIDs 
    return str 
on error eMsg number eNum 
    set AppleScript's text item delimiters to oldTIDs 
    error "Can't rightStringFromRight: " & eMsg number eNum 
end try 

Ende rightStringFromRight

auf is_number (number_string) Satz number_string versuchen als Nummer number_string wahr auf Fehler zurück return false Ende versuchen Ende is_number

Antwort

0

Ich habe endlich das Skript funktioniert. Ein paar falsche Annahmen korrigiert und alles ist gut.

Verwandte Themen