Apple Script Handler funktioniert nicht in der Anweisung tell

395
Rimmi2002

Hallo, ich schreibe ein Skript, das ausgewählte Dateien / Ordner im Format xxxyearxxx in xxxyear umbenennt. Ich bin neu in Apple Script und habe viel Autoit / C ++ gemacht.

Ich kann meinen Handler nicht dazu bringen, mit einer Tell-Anweisung zu arbeiten. Ich habe alles ausprobiert ("mein", "von mir") und bekomme Fehler beim Handler. Der Handler funktioniert gut, wenn er außerhalb der tell-Anweisung aufgerufen wird:

Mit "my" wird das Skript nicht kompiliert und ich erhalte die folgende Fehlermeldung: Syntaxfehler: Ein Befehlsname kann diesem "my" nicht folgen.

with "of me" Dieses Skript wird kompiliert und ausgeführt, aber es wird folgende Fehlermeldung angezeigt: "Finder hat einen Fehler erhalten: Der using-Parameter fehlt für splittext." Nummer -1701 von «class by»

Jede Hilfe, um herumzukommen, wäre sehr hilfreich. Skript unten:

`

set MaxYear to 2018 set MinYear to 1990 -- return splittext {"abc2015def", 2018, 1990}   tell application "Finder" set allfiles to every item of (choose folder with prompt "Choose the Files you'd like to rename:" with multiple selections allowed) as list -- set allfile to selections  repeat with x in allfiles if kind of x is "Folder" then -- if xtype is "Folder" then set cname to name of x set newname to splittext of me if newname then set name of x to newname end if end if end repeat end tell   on splittext  set dyear to MaxYear repeat until dyear < MinYear set AppleScript's text item delimiters to dyear set theTextItems to every text item of theText set AppleScript's text item delimiters to "" if (count of theTextItems) > 1 then return the first item of theTextItems & dyear as string end if set dyear to dyear - 1 end repeat return false end splittext 
0
Kann jemand helfen? Rimmi2002 vor 5 Jahren 0

2 Antworten auf die Frage

0
boissonnfive

Dieser Code funktioniert, aber ...

Ihr Handler:

splittext 

sollte sein :

splitText(theText, MaxYear, MinYear} 

Beachten Sie die Klammern anstelle von geschweiften Klammern (und auch das Kamelgehäuse).

Sie sollten immer eine Zeichenfolge in Ihrem Handler zurückgeben:

return "" -- return false 

Und in der Wiederholungsschleife oben:

if newname is not "" then -- if newname then 

Es gibt noch weitere Fallstricke: die Art von x. Dies ist eine lokale Zeichenfolge, dh "Folder" wird auf Französisch "Dossier" sein. Sie sollten vielleicht so etwas tun, wenn Sie nicht aus dem englischsprachigen Land sind:

log kind of x 

Also der ganze Code, der auf meinem Rechner funktioniert (10.12.6):

set MaxYear to 2018 set MinYear to 1990 --return splitText("abc2015def", 2018, 1990)  tell application "Finder" set allfiles to every item of (choose folder with prompt "Choose the Files you'd like to rename:" with multiple selections allowed) as list -- set allfile to selections  repeat with x in allfiles log kind of x if kind of x is "Folder" then -- if xtype is "Folder" then set cname to name of x set newname to my splitText(cname, MaxYear, MinYear) if newname is not "" then set name of x to newname end if end if end repeat end tell   on splitText(theText, MaxYear, MinYear) set dyear to MaxYear repeat until dyear < MinYear set AppleScript's text item delimiters to dyear set theTextItems to every text item of theText set AppleScript's text item delimiters to "" if (count of theTextItems) > 1 then return the first item of theTextItems & dyear as string end if set dyear to dyear - 1 end repeat return "" end splitText 
0
Rimmi2002

In diesem Fall fand ich schließlich heraus, dass der Fehler splittext eine Art internes AppleScript-Element ist. Ich fügte nicht die geschweiften Klammern hinzu, die das Programm automatisch meine Standardklammern in geschweifte Klammern änderte.

Einmal habe ich den Namen in _splittext geändert. Alles hat gut funktioniert.