Applescript:在没有保存对话框的预览中批量保存文件

时间:2016-02-22 12:26:37

标签: applescript batch-processing

提前感谢您的帮助。

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

代码:

tell application "Finder"
    set fl to files of folder POSIX file "/Users/myname/Desktop/myfolder/" as alias list
end tell

repeat with f in fl
    tell application "Preview"
        activate  
        open f

        # Trying to save before the window has appeared will fail.
        # Note: - This assumes that NO window was initially open.
        #  - The code should be made more robust to eventually time out.

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

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

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

无论如何,因为我无法重现你所拥有的东西,所以采取了不同的方法。

1)我在脚本顶部添加了一个编码/版本列表列表,可能需要特殊处理(如点击返回键)。您当然可以修改这两个列表来管理您可能拥有的其他案例。

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

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

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

根据我的测试,我不认为编码是阻止标准。我认为版本1.6是。这是脚本。它包括评论,使您能够调整它:

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

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

我非常有兴趣获得有关此版本的反馈。

答案 1 :(得分:0)

在没有&#34的情况下保存;另存为"弹出对话框,在f"中添加"。这里" f"是文件名。你也可以放入不同的路径。

save front document in f