Answers:
选择在Automator中创建一个服务,该服务仅在Finder中接收选定的文件和文件夹作为输入。添加“ 运行Shell脚本”操作并将输入作为参数传递。
您收到的参数是所选文件和文件夹的完整Unix路径。使用growlnotify
,作为演示目的的Growl的一部分:
在文件上运行它的Growl消息:
该命令显示在Finder中的文件或文件夹的上下文菜单中。如果适用的服务太多,则会将它们分组到子菜单服务中。
如果你的脚本需要两个完整的文件路径和文件名,你可以不喜欢下面,首先从完整路径解压文件名:
for f in "$@"
do
name="$( basename $f )"
/usr/local/bin/growlnotify "$name" -m "$f"
done
您可以看到文件名用作标题,而路径在Growl中用作消息:
如果您需要查询其他输入,可以执行一个简短的AppleScript来执行此操作。以下是growlnotify
查询输入的完整shell脚本(如上所述),并将所选文件重命名为该新名称。我没有包含错误处理等,例如,在新文件名中添加冒号和斜杠可能会破坏脚本。
# 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
以下方式公布的示例重命名操作的屏幕截
~/Library/Services
,你可以随时Command+Click
在文件名中(在这种情况下是Automator中的服务)来显示弹出菜单中的完整路径。