我如何在shel脚本中使用exiftool?

问题描述 投票:0回答:2

MacOS Catalina 10.15.3上的Im

我正在使用zsh

我想创建一个Atomator应用,该应用为我从文件中删除了元数据。 Atomator应用程序的工作方式如下:我将文件拖放到应用程序上,然后应用程序启动shellscript,并将文件路径作为输入。

我正在使用exiftools删除元数据。

我首先测试了exiftools是否可以在终端上使用:

image of my terminal

并且有效。

但是当我在Automator应用程序内的shellscript中使用exiftool时,它说它没有找到命令“ exiftools”。

这是我的自动工作流程:

my Automator Workflow

并且自动化运行此Shellscript:

for f in "$@"
do
    echo "$f"
done

xattr -c "$f"

exiftool -all= "$f"

rm -r "$f"_original

我对其进行了测试,并且文件路径已正确存储在$ f变量中。

但是由于某些原因,自动化中的shellscript无法使用exiftool。

错误消息中的第二个错误并不重要,因为出现该错误是因为exiftool命令没有运行。

这是自动化应用程序的错误消息:

my error message

------------------------

非常感谢

macos shell automator
2个回答
0
投票

我通过将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

0
投票

“解决方案”脚本存在多个问题。首先,它不适用于多个文件(即在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

© www.soinside.com 2019 - 2024. All rights reserved.