【问题标题】:AppleScript error when trying to copy home folder to shared drive尝试将主文件夹复制到共享驱动器时出现 AppleScript 错误
【发布时间】:2014-03-05 19:45:39
【问题描述】:

所以,我正在编写一个脚本,将主文件夹复制到已安装的共享驱动器文件夹中。但我收到以下错误:

“处理程序无法处理此类编号-10010的对象”

这是我在此处看到的其他代码示例之后提出的代码。我猜这是我告诉 finder 复制的方式。

set vserver to ("/Volumes/sharedfolder")
set source to ("/Users/user")

tell application "Finder"
    duplicate source to vserver
end tell

我还能怎么写?

我还尝试运行布尔测试以查看 Finder 是否看到共享文件夹或我的主文件夹,它返回错误。 (但应该返回两个时只有一个 false)

tell application "Finder"
    setaBoolean1 to get (exists vserver)
    setaBoolean1 to get (exists source)

end tell

【问题讨论】:

  • 请注意,在您的原始示例脚本中,您有 duplicate souce to vserver:这是 Web 浏览器中的拼写错误,还是在原始脚本中也拼写为 souce
  • 与问题无关,但与您正在做的事情有关:我建议输入 do shell script "rsync -azv " & source & " " & vserver 但没有 NSGod 建议的 POSIX file(因为它是终端命令并使用 POSIX,不像Finder),而不是 Finder 块。这将确保复制所有文件并维护权限(-a 表示存档)。您甚至可以多次运行它以确保复制所有内容,因为它会恢复中断的传输。

标签: macos applescript


【解决方案1】:
set vserver to ("/Volumes/sharedfolder")

上面的行将变量vserver 设置为由"/Volumes/sharedfolder" 组成的string 对象。同样,set source to "/Users/user" 行将source 设置为包含"/Users/user"string 对象。请注意,当您告诉 Finder 复制项目时,字符串不是它所期望的。

tell app Finder 行基本上是试图告诉 Finder 将一个 string 复制到另一个 string,它不知道该怎么做(因此出现了 Handler can't handle objects of this class 消息)。

您需要做的是,而不是创建字符串,而是创建对这些文件夹的某种文件系统引用,以便 Finder 知道如何处理它们。

有很多方法可以做到这一点,但我发现可行的方法(使用相同的 POSIX 样式路径格式)如下:

set vserver to POSIX file "/Volumes/sharedfolder"
set source to POSIX file "/Users/user"

tell application "Finder"
    duplicate source to vserver
end tell

【讨论】:

  • 越来越暖和了。收到另一个错误“操作无法完成”。 number -36 这可能是服务器问题。运行代码后,我立即与挂载的服务器断开连接。
  • 忘记最后一条评论,这非常有效。我只是在工作中遇到了连接问题。
猜你喜欢
  • 2015-08-24
  • 1970-01-01
  • 1970-01-01
  • 2011-02-21
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 2021-01-10
  • 2016-12-28
相关资源
最近更新 更多