2015-02-11 60 views
0

因此,我试图在Mac OS Yosemite下使用Automator来创建服务,以允许用户截取屏幕截图并将其保存到指定的位置某种“另存为”对话框。这似乎应该很容易,但由于某种原因,我遇到了困难。截图组件很容易,使用Automator中的“采取屏幕截图”操作,但它将它保存到自定义位置,这会导致我出现问题。Apple Automator采取屏幕截图并保存到用户指定位置

尝试了几种不同的方法之后,似乎最简单的做法是将屏幕截图保存到“采取屏幕截图”操作中的固定目录/文件名,然后(使用AppleScript)在该目录中重命名它,并将其移动到用户指定的目标目录。所以,我为我的服务添加了“运行AppleScript”操作。在其中,我使用AppleScript中的choose file name命令生成对话框以选择文件名/路径。我试图从路径中分割出文件名,这样我就可以将我保存的文件重命名为“截图”,然后将其移至我想要保存的路径。我可以得到完整的路径,但是从路径获取文件名时遇到问题 - 我已经尝试了我在线看到的各种建议。在我的屏幕截图中,显示的错误是来自尝试做的

我并没有通过这个流程设置任何方式,所以如果任何人有任何更好的建议,如何做我想做的事情,通过一切手段请告诉我。否则,如果有人能够告诉我如何从路径中提取文件名(并且还有一些特殊的方法,您必须使用该字符串来重命名文件),那会很棒!

Screenshot of Automator service

的AppleScript代码描绘在截图:

on run {parameters} 
    set thePath to (choose file name with prompt "Where would you like to save your file?") 
    tell application "Finder" 
     display dialog thePath as string 
    end tell 
    set UnixPath to POSIX path of (thePath as text) 
    display dialog UnixPath 
end run 

我试过,但没有奏效:

set basePath to POSIX path of (parent of (thePath) as string)

感谢检查出来!

+1

查看脚本编辑器在其“文件”菜单中具有的模板,请尝试“Droplets => Droplet with settable properties”/它包含的代码显示如何获取文件路径的名称/扩展名。另外,请查看Terminal.app窗口中的“man screencapture”。 “screencapture”完成所有真正的工作。 – 2015-02-11 08:59:51

回答

1

一个简单的方法是使用命令行工具“screencapture”。它有很多选择,你可以选择。看到它的手册页。这里有一个例子,你可以直接作为applescript运行,或者如果你愿意的话,你可以把它放在一个applescript的automator动作中。

好运。

set thePath to (choose file name with prompt "Where would you like to save your file?") 
do shell script "screencapture -mx -T1 " & quoted form of (POSIX path of thePath & ".png") 
+0

谢谢,这工作完美!不知道为什么苹果不使用纯粹的Automator操作更容易做到这一点,除非我错过了一些东西。 – 2015-02-11 21:23:47

0

我在Automator中创建了一个文件夹操作。选择桌面。添加查找Finder对象(搜索:桌面)。添加移动查找器对象并选择您的首选目标。这会自动移动所有的屏幕截图。