这里不经常使用AppleScript用户,因此这可能是非常基本的东西,但我似乎无法创建一个非常简单的脚本来创建新的别名文件工作。这是完整的脚本:
set source_file to "/path/to/test.txt"
set alias_file to "/path/to/test.txt alias"
tell application "Finder" to make new alias at alias_file to source_file
我已经尝试过,有没有“新”。我用文件名前面的“POSIX文件”和文件名后的“as POSIX文件”作为强制对象进行了尝试。我试过“at * to *”和“to * at *”。万一目的地需要是一个包含文件夹,我试过了。绝对所有变体都会产生相同的错误消息:
execution error: Finder got an error: AppleEvent handler failed. (-10000)
并没有告诉我很多。
我显然在这里用“/ path / to /”替换了实际的文件路径,但我可以确保ls /path/to/test.txt
确认源路径有效,ls "/path/to/test.txt alias"
确认目标路径确实不存在。
如果重要,我正在运行Mac OS X 10.11.5。 Finder.sdef条目确保它看起来应该做我想要的:
make v : Make a new element make new type : the class of the new element at location specifier : the location at which to insert the element [to specifier] : when creating an alias file, the original item to create an alias to or when creating a file viewer window, the target of the window [with properties record] : the initial values for the properties of the element → specifier : to the new object(s)
我真正想做的是从命令行使用osascript运行它,我真正想要做的是从Python调用osascript单行程序,因此文件路径将是内联的,而不是变量。但我先移动到命令行,然后移动到脚本编辑器,因为我无法使它工作,并且调用此代码段的每个方法都会产生相同的错误消息。所以希望当/如果我得到一个脚本工作,我将能够从Python调用osascript中的等效代码。 :}
答案 0 :(得分:4)
从AppleScript represents file paths differently than POSIX does开始,你使用POSIX file
肯定是在正确的轨道上(实质上是冒号而不是正斜杠)。
您可以手动将所有路径转换为AppleScript路径,但我认为,为了保持文件路径的可读性,我们可以将它们转换为更好的解决方案(并让您清楚地了解它们确实是文件路径的源代码) )。
然而,POSIX file
的问题在于它返回文件引用而不是make new alias
命令正在查找的文本路径。要解决此问题,您只需将返回的文件引用转换为text
即可使alias
满意:
set source_file to (POSIX file "/path/to/test.txt") as text
set alias_file to (POSIX file "/path/to/test.txt alias") as text
tell application "Finder" to make new alias at alias_file to source_file
还有一个问题:make new alias at x to y
命令期望y
成为文件的路径,x
成为应该放置别名的目录的路径,但是您要将路径传递给x
和y
的文件。目标(“at”)路径应为/path/to/
- make new alias
命令将自动命名别名{original filename} alias
。所以,总结一下:
set source_file to (POSIX file "/path/to/test.txt") as text
set alias_dir to (POSIX file "/path/to/") as text
tell application "Finder" to make new alias at alias_dir to source_file
这可能有点啰嗦,但我希望它有所帮助!