MacOS Catalina 10.15.3上的Im
我正在使用zsh
我想创建一个Atomator应用,该应用为我从文件中删除了元数据。 Atomator应用程序的工作方式如下:我将文件拖放到应用程序上,然后应用程序启动shellscript,并将文件路径作为输入。
我正在使用exiftools删除元数据。
我首先测试了exiftools是否可以在终端上使用:
并且有效。
但是当我在Automator应用程序内的shellscript中使用exiftool时,它说它没有找到命令“ exiftools”。
这是我的自动工作流程:
并且自动化运行此Shellscript:
for f in "$@"
do
echo "$f"
done
xattr -c "$f"
exiftool -all= "$f"
rm -r "$f"_original
我对其进行了测试,并且文件路径已正确存储在$ f变量中。
但是由于某些原因,自动化中的shellscript无法使用exiftool。
错误消息中的第二个错误并不重要,因为出现该错误是因为exiftool命令没有运行。
这是自动化应用程序的错误消息:
------------------------
非常感谢
我通过将exiftools移到主目录中的文件夹来解决了这个问题。然后,我将shellscript移至该目录并使用来执行exiftool。 /
我的shellscript现在看起来像这样:
for f in "$@"
do
echo "$f"
done
cd /Users/niklas/Programming/Tools/ExifTool/
./exiftool -all= "$f"
rm -r "$f"_original
exit
“解决方案”脚本存在多个问题。首先,它不适用于多个文件(即在Finder中选择多个文件,然后将它们全部拖到应用程序中)。它循环遍历文件,回显每个路径,但随后仅在最后一个路径上运行exiftool
。要使其在所有文件上运行,请将对文件[[inside进行操作的命令放在for
循环中,而不是放在其后(然后删除echo
-它作为示例中的占位符存在)代码)。
&&
连接命令,并且只有第一个成功时,它才会运行第二个命令。第三,cd
在脚本中四处走动可能会导致脚本混乱,因为它会更改相对路径的含义(在这里应该不是问题,但通常是一种不好的做法)。如果您需要引用其他目录中的文件(例如exiftool
可执行文件),则通过路径指定其位置比先将cd
指向它更安全。
这是我编写脚本的方式:
for f in "$@"
do
/Users/niklas/Programming/Tools/ExifTool/exiftool -all= "$f" &&
rm -r "$f_original"
done