0

创建文件副本并指定新名称的推荐方法是什么?

目前我使用:

test = Application("Finder").duplicate(Path("/var/tmp/old.txt"), {replacing:true}) // creates "/var/tmp/old copy.txt"
test.name = "new.txt" // renames it to "/var/tmp/new.txt"

我宁愿在该重复方法中指定输出名称,而不是事后指定它。Finder 字典说我可以使用:

duplicate specifier : the object(s) to duplicate 
[to: location specifier] : the new location for the object(s)
[replacing: boolean] : Specifies whether or not to replace items in the destination that have the same name as items being duplicated

但是当我尝试以下操作时:

test = Application("Finder").duplicate(Path("/var/tmp/old.txt"), {to:Path("/var/tmp/new.txt"), replacing:true})
  • 如果 new.txt 尚不存在,我会收到消息“错误 -1728:无法获取对象”
  • 如果 new.txt 已存在,则消息为“错误 -1700:无法转换类型”

目前尚不清楚“位置说明符”是什么类型。我尝试了带有文件夹/文件/文件夹+文件的路径,常规字符串(文件夹/文件/文件夹+文件)。

建议?

4

1 回答 1

1

奇怪的行为,确实......我也想知道使用 Finder 的重复处理程序的正确语法,但如果你只需要复制你的文件,你也可以使用 doShellScript-handler:

app = Application.currentApplication()
app.includeStandardAdditions = true

sourcePath = "/var/tmp/old.txt"
targetPath = "/var/tmp/new.txt"

app.doShellScript("cp -f '" + sourcePath + "' '" + targetPath + "'")

我知道这只是一种解决方法......

于 2015-01-29T21:38:42.127 回答