我有一个Automator工作流程,它利用这个shell脚本来获取托管通过此工作流程运行的文件的目录的名称。稍后我将该目录名称作为文件的注释。
for f in "$@"
do
filepath=$(dirname "$f")
dirname=$(basename "$filepath")
echo "$dirname"
done
每当我在其上抛出多个文件时,目录名称不会反映一次(正如我想的那样),但是我丢弃了多少文件。然后,这会多次添加相同的评论。
我该如何解决?
编辑:
我想尝试消除Automator并单独使用Applescript + Shell。
如何让shell返回目录名?现在它只是在对话框中给我$dirname
...
on adding folder items to theWatchedFolder after receiving theDetectedItems
set dirName to do shell script "for f in '$@'
do
filepath=$(dirname '$f')
dirname=$(basename '$filepath')
echo '$dirname'
done"
display alert dirName
end adding folder items to
答案 0 :(得分:0)
on adding folder items to thisFolder after receiving added_items
repeat with aFile in added_items
tell application "Finder"
set parentpath to POSIX path of (parent of (aFile) as string)
set comment of aFile to parentpath
end tell
end repeat
end adding folder items to
答案 1 :(得分:0)
我会选择Applescript Droplet。
将此代码保存为应用程序。
当您从单个目录或多个目录中删除文件时,它会使用自己的原始目录对每个文件进行注释。
然后将文件移动到列出的移动文件夹。
property moveFolder : "Macintosh HD:Users:USERNAME:fooDIR:"
on open theseFiles
repeat with i from 1 to number of items in theseFiles
set this_item to item i of theseFiles
tell application "Finder"
set parentpath to POSIX path of (parent of (this_item) as string)
set comment of this_item to parentpath
end tell
end repeat
tell application "Finder"
move theseFiles to moveFolder
end tell
end open
您可以使用choose
命令来选择移动文件的位置而不是硬编码,但是文件可能并不总是在一个批次中传递到Droplet,即使这是如何将它们放到它上面的。这意味着`选择对话框可能会显示多次,似乎只是一次运行。
但上述希望能给你一个起点。