Обработчик сценариев Apple не работает в операторе Tell

319
Rimmi2002

Привет я пишу скрипт, который будет переименовывать выбранные файлы / папки в формате xxxyearxxx, чтобы быть xxxyear. Я новичок в сценарии Apple, сделал много вещей autoit / c ++.

Я не могу заставить своего обработчика работать с оператором Tell. Я перепробовал все ("мое", "меня") и получаю ошибки с обработчиком. Обработчик работает нормально, когда вызывается вне оператора Tell:

с «my», сценарий не компилируется, и я получаю следующую ошибку: Синтаксическая ошибка: имя команды не может идти после этого «my».

with "of me" Этот скрипт компилируется и запускается, но я получаю следующую ошибку: "Finder получил ошибку: отсутствует параметр using для splittext." номер -1701 от «класс по»

Любая помощь, чтобы обойти это было бы очень полезно. Сценарий ниже:

`

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
кто-нибудь может помочь? Rimmi2002 5 лет назад 0

2 ответа на вопрос

0
boissonnfive

этот код работает, но ...

ваш обработчик:

splittext 

должно быть :

splitText(theText, MaxYear, MinYear} 

Обратите внимание на круглые скобки вместо фигурных скобок (и верблюжья оболочка тоже).

Вы всегда должны возвращать строку в вашем обработчике:

return "" -- return false 

И в цикле повтора выше:

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

Есть и другие подводные камни: вид х. Это локальная строка, т.е. «Папка» будет «Досье» на французском языке. Возможно, вы должны сделать что-то вроде этого, если вы не из страны, на которой говорят по-английски:

log kind of x 

Итак, весь код, который работает на моей машине (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

Спасибо в этом случае я в конечном итоге обнаружил, что ошибка splittext является своего рода внутренним элементом AppleScript. Я не добавлял фигурные скобки, программа автоматически заменяла мои стандартные скобки на фигурные скобки.

Как только я изменил название на _splittext, все работало нормально.

Похожие вопросы