首先我是一个初级AppleScript开发人员。这个问题我已经研究了很长时间,但没有发现任何结果。我有一个AppleScript将ppt文件转换成pdf格式。但是当脚本匹配到错误的PPT文件时,脚本会挂起。
脚本/keynote将弹出一个对话框,显示"xxx.ppt现在无法打开";
文件格式无效有什么方法可以防止keynote弹出这种类型的对话框?
下面是示例代码,文件是一个图像文件,但我将扩展名改为pptx以模拟非法文件:
set thefile to POSIX file "/Users/dazhangluo/Downloads/brain-storming.pptx"
tell application "Keynote"
activate
try
set thedoc to open thefile
--display dialog class of thedoc
on error errMessage
--display dialog errMessage
log errorMessage
end try
end tell
有一个叫做exiftool
的命令行工具,它可以检查文件并获得它们的元数据,包括'文件类型'标签(使用-filetype
)。有多种方法来安装它†。不像'mdls',它不容易被文件扩展名欺骗。如果您在pptx文件上运行它,它将在其结果中包含以下内容:
File Type : PPTX
然后您可以抓取最后一个单词进行测试。该脚本将循环遍历指定文件夹中的文件,使用exiftool提取其文件类型,然后将任何匹配文件的别名复制到新列表中。然后在keynote中打开每个文件。我的keynote版本(v8)不允许我用powerpoint文档编写任何脚本,所以在这一点上你要靠自己。
set srcFol to (path to desktop as text) & "presentations" as alias
-- or if you prefer…
-- set srcFol to choose folder
tell application "Finder"
set fList to files of srcFol as alias list
set cleanList to {}
repeat with f in fList
set ppFile to POSIX path of f
set qfFile to quoted form of ppFile
tell me to set exifData to do shell script "/usr/local/bin/exiftool -filetype " & qfFile
if last word of exifData is "PPTX" then
set end of cleanList to contents of f
--> alias "Mac:Users:username:Desktop:presentations:powerpoint1.pptx"
end if
end repeat
end tell
tell application "Keynote"
activate
repeat with pptxFile in cleanList
open pptxFile
-- do whatever
end repeat
end tell
NB†根据exiftool的安装位置,您可能需要更改路径,您可以通过which exiftool
获得。