打开非法 pptx 文件后 AppleScript Keynote 挂断
AppleScript Keynote hangup after opening a illegal pptx file
首先,我是一名初级 AppleScript 开发人员。我已经搜索了这个问题很长时间但没有找到结果。我有一个 AppleScript 可以将 ppt 文件转换为 pdf 格式。但是脚本在匹配到错误的ppt文件后会挂起
script/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
的命令行工具可以检查文件并获取其元数据,包括 'file type' 标记(使用 -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
注意 † 根据 exiftool 的安装位置,您可能需要更改路径,您可以使用 which exiftool
.
首先,我是一名初级 AppleScript 开发人员。我已经搜索了这个问题很长时间但没有找到结果。我有一个 AppleScript 可以将 ppt 文件转换为 pdf 格式。但是脚本在匹配到错误的ppt文件后会挂起
script/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
的命令行工具可以检查文件并获取其元数据,包括 'file type' 标记(使用 -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
注意 † 根据 exiftool 的安装位置,您可能需要更改路径,您可以使用 which exiftool
.