#tags #applescript #finder
#Теги #applescript #поисковик
Вопрос:
Я хочу назначить определенные теги выбранным файлам в Finder (OS X 10.9.4), используя AppleScript и tag, но у меня возникают проблемы с передачей пути к файлу в tag.
tell application "Finder"
try
repeat with currentFile in items of (get selection)
if label index of currentFile is 0 then
do shell script ("/usr/local/bin/tag -a 'foo' " amp; currentFile)
else
set label index of currentFile to 0
end if
end repeat
on error e
return e
end try
end tell
Если я /Users/fort/bar.txt
выбрал в Finder, я получаю следующую ошибку:
"tag: The file “/Users/fort/bar.txt” couldn’t be opened because there is no such file."
Однако следующий код изменяет тег указанного файла на foo
:
set myFile to "/Users/fort/bar.txt"
do shell script ("/usr/local/bin/tag -a 'foo' " amp; myFile)
Есть идеи, почему currentFile
не передается тегу таким образом, чтобы он мог анализировать? Спасибо.
форт
Комментарии:
1. это именно та ошибка, которую вы получаете?
2. Я добавил кавычки по ошибке, и имя моего Mac HD (которое является MBA) должно добавляться к пути. И, очевидно, что имя файла выдумано. Итак, точная ошибка будет выглядеть следующим образом:
tag: The file “MBA/Users/fort/bar.txt” couldn’t be opened because there is no such file.
Ответ №1:
Проблема с путем, необходимо преобразовать элемент Finder в строку и преобразовать путь HFS в путь posix
Попробуйте это
tell application "Finder"
repeat with currentFile in (get selection)
tell currentFile
if label index is 0 then
my tagCmd(it as text) -- convert Finder item e.g. file "bar.txt" of folder "fort" of.... --> "MBA:Users:fort:bar.txt” (path with colon)
else
set label index to 0
end if
end tell
end repeat
end tell
on tagCmd(f)
do shell script "/usr/local/bin/tag -a 'foo' " amp; quoted form of POSIX path of f -- posix path convert path with colon to use in shell
end tagCmd
Комментарии:
1. Это сработало, спасибо @jackjr300! Единственное, что не работает, это переключение тегов, но это не имеет значения, поскольку я создал другой скрипт, который удаляет все теги.
2. можете ли вы опубликовать скрипт, который удаляет все теги?