我需要一个脚本来读取所选文件夹中的每个.dwg / .step及其子文件夹,然后进行一系列单击以将文件保存到同一文件夹中,然后关闭它。
这就是我所拥有的,Applescripts无法识别.dwg / .step扩展指令。
set MyFolder to (choose folder)
tell application "Finder"
set MyFiles to every file of entire contents of MyFolder whose name extension is ("DWG" or "STEP")
return MyFiles -- this doesn't return anything
repeat with aFile in MyFiles
tell application "Rhinoceros"
open aFile
activate
delay 1
end tell
tell application "System Events" -- the instruction is given 'manually'
click at {150, 1}
delay 1
click at {150, 180}
delay 1
click at {680, 335}
delay 1
click at {600, 495}
delay 1
click at {900, 510}
end tell
delay 1
end repeat
end tell
我是applescript的初学者,但是此应用程序可以节省大量的工作时间! 预先感谢您的帮助:)
答案 0 :(得分:1)
您的主要问题是在括号内使用prometheus.yml
运算符,该运算符是在两个字符串值上执行的。这对AppleScript没有意义,也不应该。正确的表达式是:
or
尽管 Finder 确实可以让您将这些谓词组合到一个列表中,使其可以共同操作:
...whose name extension is "DWG" or name extension is "STEP"
此外,在声明...whose name extension is in {"DWG", "STEP"}
变量之后,将最后的end tell
移至紧随其后的位置-无需(并且具有积极性)将 System Events 操作包含在 Finder 块。
因此,您的 Finder 命令应该看起来像这样:
MyFiles
由于某种无法解释的原因,我将其强制为tell application "Finder" to set MyFiles to (every file of the entire contents of ¬
(choose folder) whose name extension is in {"DWG", "STEP"}) as alias list
的结尾,因为它会加快处理时间。
您的脚本的最后一部分是在不了解此应用程序“ Rhinoceros”的情况下无法提供太多了解的内容。我做了一个快速的Google,但找不到任何东西。
但是,如果它能够理解alias list
命令,则表明它是可编写脚本的,并且可能附带了open
命令。
从不尝试通过单击坐标来完成任务-它会以最小的插针破坏。如果该程序不可编写脚本,则可能会用save
命令引发错误,在这种情况下,最好的办法是编写其应用程序脚本并访问菜单open
。
但是我认为无论采用哪种方式,您都将很难成功地实现此目标。
如何 ,如果您想要的只是将这些文件保存在单个文件夹中,则无需尝试使用 Rhinoceros 。而是使用 Finder 将文件save
(或duplicate
)移到新位置:
move
或
tell app "Finder" to duplicate MyFiles to MyFolder
这可以全部压缩为一行,因此您的整个脚本(如果您确实希望得到这样的结果)将变得简单:
tell app "Finder" to move MyFiles to MyFolder