1

我需要一个脚本来读取所选文件夹及其子文件夹中的每个 .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 的初学者,但这个应用程序可以节省大量的工作时间!在此先感谢您的帮助 :)

4

1 回答 1

1

您的主要问题是or在括号内使用运算符,该运算符正在对两个字符串值执行。这对 AppleScript 没有意义,也不应该。正确的表达方式是:

...whose name extension is "DWG" or name extension is "STEP"

尽管Finder确实允许您将这些谓词组合成一个列表,它可以在该列表上共同操作:

...whose name extension is in {"DWG", "STEP"}

end tell此外,在声明变量之后将 final移到MyFiles- 没有必要(并且它是积极的阻碍)将系统事件操作包含在Finder块中。

因此,您的Finder命令最终应该看起来像:

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

我把它强制到alias list最后,因为它会加快处理时间,出于某种莫名其妙的原因。


如果不了解有关此应用程序“Rhinoceros”的更多信息,您的脚本的最后一部分是我无法提供太多洞察力的。我做了一个快速的谷歌,但找不到任何东西。

但是,如果它能够理解该open命令,则意味着它是可编写脚本的,并且它可能有一个与之配套的save命令。

永远不要试图通过点击坐标来完成任务——它会随着最轻微的针落下而中断。如果程序不可编写脚本,它可能会在命令中抛出错误open,在这种情况下,最好的办法是编写其应用程序进程的脚本并访问菜单save命令。

但是我认为,无论您采用哪种方式,您都将很难成功地实现这一目标。


但是,如果您只想将这些文件保存在单个文件夹中,那么您根本不需要尝试使用Rhinoceros。相反,使用Finderduplicate(或move)到新位置:

tell app "Finder" to duplicate MyFiles to MyFolder

或者

tell app "Finder" to move MyFiles to MyFolder

这一切都可以浓缩成一行,因此您的整个脚本(如果这是您确实想要的结果)将简单地变成:

set myfolder to (choose folder)

tell application "Finder" to move (every file of the entire contents of myfolder ¬
    whose name extension is in {"DWG", "STEP"}) as alias list to myfolder
于 2018-11-16T22:57:43.880 回答