Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OS X 10.9 Applescript更改:在;系统事件“;上下文来移动文件_Applescript_Osx Mavericks_Move_File Move - Fatal编程技术网

OS X 10.9 Applescript更改:在;系统事件“;上下文来移动文件

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) 结束语 现在它给

我去运行一个旧脚本,它在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)
结束语
现在它给了我以下的错误

错误“系统事件”发生错误:无法生成文件 \“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