Applescript:在预览中批量保存文件而不保存对话框

Applescript:在预览中批量保存文件而不保存对话框,applescript,batch-processing,Applescript,Batch Processing,提前感谢你的帮助 Applescript的新功能。 尝试在预览中打开文件夹中的所有文件并保存它们。 问题是保存时有一半时间会弹出一个对话框,这需要我坐在那里按enter键 代码: 谢谢你的帮助我制作了几个PDF文件并从不同的网站下载,我得到了版本1.3、1.4、1.5、1.7……的示例,但没有1.6!对他们所有人来说都没有问题 无论如何,因为我无法复制你所拥有的,我采取了不同的方法 1) 我在脚本顶部添加了一个编码列表/版本列表,可能需要特殊处理(如按回车键)。当然,您可以修改这两个列表来管理您

提前感谢你的帮助

Applescript的新功能。 尝试在预览中打开文件夹中的所有文件并保存它们。 问题是保存时有一半时间会弹出一个对话框,这需要我坐在那里按enter键

代码:


谢谢你的帮助

我制作了几个PDF文件并从不同的网站下载,我得到了版本1.3、1.4、1.5、1.7……的示例,但没有1.6!对他们所有人来说都没有问题

无论如何,因为我无法复制你所拥有的,我采取了不同的方法

1) 我在脚本顶部添加了一个编码列表/版本列表,可能需要特殊处理(如按回车键)。当然,您可以修改这两个列表来管理您可能遇到的其他情况

2) 我更改了脚本以允许脚本获取pdf的编码和版本值。这是通过shell命令“mdls”使用spotlight数据库完成的。我使用它两次来获得版本和编码特征。shell命令返回我们想要获得的值前后的字符,因此我使用文本x到Y来提取编码和版本本身

3) 如果PDF版本/编码在需要特殊处理的预定义列表中,则我将OK设置为true

4) 在save指令之后,脚本现在测试OKReturn是否为true。然后我要求脚本为您按回车键。您可能需要调整此部分,例如,它不仅可以是1返回,还可以是2或其他。这是我无法测试的,因为我所有的pdf都在工作。请记住,因为我模拟返回键,所以在脚本运行期间不应使用键盘

根据我的测试,我不认为编码是阻塞标准。我认为1.6版是,这是脚本。它包括注释,使您能够对其进行调整:

将CodingReturn设置为{“Mac OS X 10.7.3 Quartz PDFContext”} 将VersionReturn设置为{“1.6”}

我很想得到您对此版本的反馈。

若要在不弹出“另存为”对话框的情况下保存,请添加“in f”。这里的“f”是文件名。你也可以换一条路

save front document in f

看看你的脚本,似乎你只是打开并保存你的文件。将文件移动或复制到所需文件夹不是更快吗?或者您想更改文件格式(默认图像=jpg)?这些文件是PDF表单。我试图从表单中收集响应数据,但在某些时候,某些PDF版本发生了更改,并且在尝试将许多文件添加到响应表单时出现错误。显然,这个问题以前就出现过,解决方案是在预览中保存文件,因为它会自动将文件转换为相同版本的pdf(这是我以前不知道的)。这在小规模测试中起到了作用。正在尝试制作一个applescript以在预览中打开和保存所有文件,使它们都成为相同的pdf版本。我用几个pdf文件测试了您的脚本(从2007年到2016年的不同版本,来自网站或自制)。没问题。当脚本停止时,要求您按enter键,这可能是因为pdf非常特殊。一旦我们知道了文件版本的特殊性,我们就可以在脚本中按enter键,但我们必须知道文件的特性才能让脚本知道。你能看到工作文件和需要输入文件之间的区别吗?在信息窗口中,是特殊版本吗?特殊编码?嗯,所有带有“保存”对话框的文件在文件夹中查看时都显示.pdf扩展名。我尝试取消选中“获取信息”中的所有“显示扩展名”复选框,但相同的文件仍然有一个保存对话框,扩展名未选中。此外,它正在尝试将文件保存到文档中…可能是一个标准的“另存为”操作?触发对话框的操作有“编码软件:Mac OS X 10.7.3 Quartz PDFContext”,分别是“版本:1.6”与“编码软件:Mac OS X 10.9.5 Quartz PDFContext”和“版本:1.3”我认为上述解决方案的问题在于,如果没有保存路径,Preview会打开“另存为”对话框,只有手动单击“保存”按钮,保存命令才能完成。试图让automator按enter键是行不通的,因为在“保存”操作解决之前,该步骤无法运行。
set myFolder to choose folder
tell application "Finder"
set fl to files of myFolder as alias list
end tell

repeat with f in fl
set FVersion to do shell script "mdls -name kMDItemVersion " & quoted form of POSIX path of f
set FEncoding to do shell script "mdls -name kMDItemEncodingApplications " & quoted form of POSIX path of f
if (length of FVersion) > 21 then set FVersion to text 19 thru -2 of FVersion -- extract only version number
if (length of FEncoding) > 42 then set FEncoding to text 38 thru -4 of FEncoding -- extract only the coding

set OKReturn to ((FVersion is in VersionReturn) and (FEncoding is in CodingReturn)) -- special treatment true/false

tell application "Preview"
    activate
    open f

    repeat until (count of windows) > 0
        delay 0.3
    end repeat
    save front document

    if OKReturn then -- we need special key to be pressed
        tell application "System Events" to keystroke return
    end if

    close front document
end tell
end repeat
save front document in f