OS X 10.9 Applescript更改:在;系统事件“;上下文来移动文件
我去运行一个旧脚本,它在10.9更新后崩溃了。我使用以下代码移动带有系统事件的文件OS X 10.9 Applescript更改:在;系统事件“;上下文来移动文件,applescript,osx-mavericks,move,file-move,Applescript,Osx Mavericks,Move,File Move,我去运行一个旧脚本,它在10.9更新后崩溃了。我使用以下代码移动带有系统事件的文件 将Somefilepath设置为“Design\u 005\u HD:Users:Design\u 005:Desktop:Start:TextFile.txt” 将somefolderpath设置为“Design_005_HD:Users:Design_005:Desktop:End:” 告诉应用程序“系统事件” 将文件(Somefilepath)移动到文件夹(somefolderpath) 结束语 现在它给
将Somefilepath设置为“Design\u 005\u HD:Users:Design\u 005:Desktop:Start:TextFile.txt”
将somefolderpath设置为“Design_005_HD:Users:Design_005:Desktop:End:”
告诉应用程序“系统事件”
将文件(Somefilepath)移动到文件夹(somefolderpath)
结束语
现在它给了我以下的错误
错误“系统事件”发生错误:无法生成文件
\“Design_005_HD:Users:Design_005:Desktop:Start:TextFile.txt\”进入
键入整数。文件中的数字-1700
“Design_005_HD:Users:Design_005:Desktop:Start:TextFile.txt”改为整数
我知道我可以把它换掉并使用finder,但我宁愿不使用它。什么改变了不再有效
2014年4月2日更新
我尝试了各种方法,将文件/文件夹位置提供给系统事件,但都不起作用。我很高兴不是我不能让它工作。我会更新这篇文章,如果我找到一个答案或一个工作更新
2014年4月3日更新
似乎这只是一个bug,系统事件无法移动文件。我已经在这里报告了,其他人也应该报告
请不要把我的代码放在心上,当我无法让它工作时,事情就这样结束了。我有10.8.5的工作代码,它是上面显示的减去系统事件告诉块中的文件夹标记。不知道为什么它与文件夹标记一起工作,但它确实如此。在多个COMP上测试。如果它没有坏,就不要大惊小怪了。注意到这一点,然后继续前进
2014年10月20日更新
对任何感兴趣的人。我收到一封电子邮件,说明我的机票已关闭/解决。因此,mavericks将永远被打破,但当它面世时,Yosemite可能会大放异彩。一般来说,Applescript使用冒号分隔的路径(:)而不是斜杠分隔的路径(/)。我说一般是因为有些应用程序可以使用斜杠,但所有程序都可以使用冒号。有关冒号路径的示例,请尝试以下代码并查看结果
set colonPath to (path to desktop as text) & "untitled folder 2:"
首先,我将把斜杠转换为冒号样式
此外,要应用脚本,这些只是字符串而不是路径。为了让applescript理解它们是路径,我们可以做一些事情。首先,您可以根据需要在它们前面添加单词file或folder。我注意到在代码中,您在文件字符串前面使用了“file”,但在文件夹字符串前面没有使用“folder”。试试看。其次,无论字符串是文件还是文件夹,都可以在字符串前面使用“别名”。还有其他方法,但我就到此为止。这两种方法都应该有效
更新:综上所述,10.9中的系统事件似乎仍然无法使用move命令。因此,这里有两种选择供您选择。我使用了斜线样式的路径,因为这就是您正在使用的
set somefilepath to POSIX file "/Users/Design_005/Desktop/Start/TextFile.txt"
set somefolderpath to POSIX file "/Users/Design_005/Desktop/End"
tell application "Finder"
move somefilepath to somefolderpath
end tell
或
祝你好运。在
OX 10.9
(可能还有10.8
)中的系统事件上下文中的移动命令中出现错误
解决方法是使用“Finder”
上下文:
使用HFS样式的路径(分隔符为:
)
将somefilepath设置为“Design\u 005\u HD:Users:Design\u 005:Desktop:Start:TextFile.txt”
将somefolderpath设置为“Design_005_HD:Users:Design_005:Desktop:End:”
告诉应用程序“查找器”
将文件somefilepath移动到文件夹somefolderpath
结束语
使用POSIX样式的路径(分隔符为/
)-如原问题所示
将somefilepath设置为“/Users/Design_005/Desktop/Start/TextFile.txt”
将somefolderpath设置为“/Users/Design_005/Desktop/End”
#注意,即使在*文件夹中,我们也使用'as POSIX file'*
#-然而,这是可行的。
告诉应用程序“查找器”
将somefilepath作为POSIX文件移动到somefolderpath作为POSIX文件
结束语
注:
作为POSIX文件
在这两种情况下都返回一个文件
对象,但是Finder仍然正确地处理移动操作-可以将POSIX文件
与文件和文件夹一起使用
- 请注意,使用
POSIX文件的前缀形式
——例如,POSIX文件”//Library“
,仅适用于路径字符串文本;如果您尝试将路径字符串构建为表达式,它会中断(在“Finder”上下文中,但在AppleScript上下文中(!):POSIX文件(“/”&“Library”)
-相反,“/”&“Library”在POSIX文件
工作时(在两种上下文中)-请参考图。为了安全起见,请始终使用后缀形式:。。。作为POSIX文件
- 将
作为POSIX文件使用的一个缺点是,如果文件/文件夹不存在,错误消息很神秘,至少在OS X 10.9中是这样:您将看到查找程序出错:处理程序无法处理此类对象。
和查找程序出错:AppleeEvent处理程序失败。
-两者都有编号-10000
李>
- (直接使用带有POSIX路径的
文件夹
,如在问题的早期版本中-例如,文件夹/库”
-仅在“系统事件”
上下文中有效,因此不是“查找器”
上下文中的选项。)
关于AppleScript OS X 10.9中的更改:
你看到的行为似乎是一个bug(另请参见@Jerry Stratton的答案);表中的任何内容都不表示该区域发生了变化
我现在认为这个问题也会影响OSX10.8
我鼓励你向苹果提交一份bug报告,我已经这样做了
不幸的是,在AppleScript中处理文件、文件夹和别名总是一团糟,不同字典中同名的类会造成混乱
set somefilepath to "/Users/Design_005/Desktop/Start/TextFile.txt"
set somefolderpath to "/Users/Design_005/Desktop/End"
do shell script "mv " & quoted form of somefilepath & space & quoted form of somefolderpath
tell application "System Events"
set myFile to file "Macintosh HD:Users:velma:Desktop:Test.png"
set myFolder to folder "Macintosh HD:Users:velma:Desktop:Test"
--delete works! with both type “file/folder” and type “disk item”
--delete myFile
--delete myFolder
--open works!
open myFile
open myFolder
--move fails!
move myFile to myFolder
end tell