Выберите для создания службы в Automator, которая получает выбранные файлы и папки в качестве входных данных только в Finder. Добавьте действие Run Shell Script и передайте входные данные в качестве аргументов.
Полученные аргументы - это полные пути Unix выбранных файлов и папок. Используя growlnotify
, часть Growl для демонстрационных целей:
Ворчание сообщения в результате запуска его в файле:
Команда появляется в контекстном меню файла или папки в Finder. Если имеется слишком много применимых Сервисов, они объединяются в Подменю Сервисов.
Если вашему сценарию требуется как полный путь к файлу, так и имя файла, вы можете сделать что-то вроде следующего, сначала извлекая имя файла из полного пути:
for f in "$@"
do
name="$( basename $f )"
/usr/local/bin/growlnotify "$name" -m "$f"
done
Вы можете видеть, что имя файла используется в качестве заголовка, а путь используется как сообщение в Growl:
Если вам нужно запросить дополнительный ввод, вы можете выполнить короткий AppleScript, чтобы сделать это. Ниже приведен полный сценарий оболочки (например, growlnotify
выше), который запрашивает ввод и переименовывает выбранный файл с этим новым именем. Я не включал обработку ошибок и тому подобное, например, добавление двоеточия и косой черты к новому имени файла, скорее всего, сломает скрипт.
# repeat for every file in selection
for f in "$@"
do
# capture input of a simple dialog in AppleScript
OUT=$( osascript -e "tell application \"System Events\" to text returned of (display dialog \"New Name of $f:\" default answer \"\")" )
# if the user canceled, skip to the next file
[[ $? -eq 0 ]] || continue
# old file name is the loop variable
OLD="$f"
# new file name is the same directory, plus the user's input
NEW="$( dirname "$OLD" )/$OUT"
# print a message announcing the rename
/usr/local/bin/growlnotify "Renaming…" -m "$OLD to $NEW"
# perform the actual rename
mv "$OLD" "$NEW"
done
Снимок экрана примера действия переименования, объявленного при помощи growlnotify
: