我知道 applescripts 可以设置为作为文件夹操作运行,但是有没有办法让它们作为文件操作运行?是的,我知道我可以通过创建一个新文件夹,将脚本放入其中并作为文件夹操作运行来解决此问题,但我想知道这是否可以完成。
为什么这些甚至存在?这似乎很荒谬。与大多数动态语言一样,AppleScript 类型似乎是不可变的原始类型(如integers 和reals),它们将按值传递,与 一起使用没有任何意义a reference to,或者是类似对象的类型(如applications、scripts 或records,它们已经通过引用传递。怎样才算a reference to不完全多余呢?以下是摘自 Apple 的 AppleScript 语言指南 ( https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html )的示例:
tell app "Finder" to set diskRef to a ref to startup disk
--result: startup disk of application "Finder"
Run Code Online (Sandbox Code Playgroud)
那么你的意思是告诉我如果我这样做的话
tell app "Finder" to set diskObj to startup disk
--result: startup disk of application "Finder"
Run Code Online (Sandbox Code Playgroud)
applescript 运行时将向 Finder 进程发送一个 apple 事件,告诉它,“嘿 - 有人刚刚要求你将 /dev/disks01 的八位字节流返回给我!哈哈!我想他应该问一下为了a reference to它!让我们开始吧!这需要一段时间!”
我正在用 …
2003 年 2 月 27 日,Apple 员工 Christopher Nebel 表示他想解决Bill Cheeseman 报道的这个问题:
由于在某些情况下应用程序和应用程序进程的命名不同,我们最终不得不编写像这样稍微令人困惑的脚本(如果我们在 Finder 中将 Adobe Photoshop 7.0 重命名为“Photoshop”):
Run Code Online (Sandbox Code Playgroud)tell application "Photoshop" to activate tell application "System Events" tell application process "Adobe Photoshop 7.0"
可以这么说,2011 年 8 月这仍然是一个问题,而且我一直遇到这个问题,所以我希望 StackOverflow 的好心人能够帮助找到解决方法;提前致谢!
给定一个应用程序名称(即我可以指示的名称activate),我希望能够将该名称传递给子例程以查找相应的进程名称。相反,给定一个进程名称,我希望能够将其传递给子例程以查找相应的应用程序名称。
有什么建议么?
由于我不会真正讨论的原因,我需要在 AppleScript 中编写一些内容,专门通过 Safari 下载一些文件。(只是某人双击运行的东西,它将打开 Safari 并在启动一些下载时向他们显示一个网页。)我可以使用 AppleScript 设置文档的 URL,但这不会下载文件。这是 Safari 认为它可以理解的文件,因此它只是尝试直接打开它。我需要将文件下载到文件系统。
我在 Google 上找到的所有内容都提到了“URL 访问脚本”,但是当我使用它时,AppleScript 编辑器要求我选择它是什么应用程序,而我似乎没有(或者不知道它在哪里)。其他建议是调用命令行工具来下载文件,但这里的问题显然是用户在 Safari 中有一些 cookie 授权他们访问服务器资源,因此命令行工具只会收到错误。
所以我想这个问题可以分解为:
tell application "Safari"下载文件?Downloads文件夹?我有一个简单的脚本,用于通过 XCode 以编程方式启动 iOS 项目:
on run project_loc
tell application "Xcode"
open project_loc
activate
end tell
tell application "System Events"
tell application process "Xcode"
click menu item "Run" of menu 1 of menu bar item "Product" of menu bar 1
end tell
end tell
end run
Run Code Online (Sandbox Code Playgroud)
这效果很好,只是它将焦点切换到 Xcode,这并不理想,因为我试图将其用作自动重新编译和重新启动以响应相关文件中的任何更改的方案的一部分。有没有什么方法可以在不将焦点集中到 Xcode 窗口的情况下完成此任务?
我需要从 AppleScript 获取所选文件夹的文件路径。我正在使用以下代码来执行此操作。
--Display selection window
set source_folder to choose folder with prompt "Please select directory."
--Get the path of the folder
set item_list to get the path of every disk item of source_folder
Run Code Online (Sandbox Code Playgroud)
我得到这样的文件路径:
文件:路径:收件人:the:fodler
我想要的是:
文件/路径/目标/文件夹
我有一个程序可以生成 shell 脚本并通过 apple 脚本运行它。我的输出是 UTF-8 编码的,我无法更改它。在 OS X 10.6 及更高版本上运行良好。在 OS X 10.4 (Tiger) 上,只要我需要处理的文件名/路径包含变音符号,例如 \xc3\xa9、\xc3\xa0、\xc3\x9c 等,我的脚本就会失败。(我没有10.5 尝试一下,所以我还不知道那个)
\n\n我认为这是区域设置的问题。
\n\ndo shell script "locale" \nRun Code Online (Sandbox Code Playgroud)\n\n给我:
\n\n"LANG=\nLC_COLLATE=\\"C\\"\nLC_CTYPE=\\"C\\"\nLC_MESSAGES=\\"C\\"\nLC_MONETARY=\\"C\\"\nLC_NUMERIC=\\"C\\"\nLC_TIME=\\"C\\"\nLC_ALL="\nRun Code Online (Sandbox Code Playgroud)\n\n所以我想开始我的脚本:
\n\nexport LC_ALL=en_US.UTF-8;\nexport LANG=en_US.UTF-8;\nRun Code Online (Sandbox Code Playgroud)\n\n可能会有所帮助,但事实证明它仍然不起作用。
\n\n我还能做些什么来使 utf-8 编码的 shell 脚本在 OS X 10.4 上工作\n我可以让 UTF-8 以其他方式工作吗?或者我可以将其转换为系统使用的默认字符编码吗?
\n\n编辑:
\n\n事实证明,从我想到的导出语句开始:
\n\nexport LC_ALL=en_US.UTF-8;\nexport LANG=en_US.UTF-8;\nRun Code Online (Sandbox Code Playgroud)\n\n确实回答了我原来的问题。
\n\n这有效:
\n\ndo shell script " export LC_ALL=en_US.UTF-8; export LANG=en_US.UTF-8; touch /\xc3\xbc"\nRun Code Online (Sandbox Code Playgroud)\n\n我的问题是我需要使用 osascript 才能立即将 shell 返回到生成它的进程,如下所示: …
我有一个 shell 脚本,它向 /etc/hosts 添加一行。如果我使用 sudo 手动运行它,它可以正常工作。我想将此文件分发给使用 Mac 的同事。但是,当 shell 脚本正常运行时,我得到:
sed: /etc/hosts: Permission denied
Run Code Online (Sandbox Code Playgroud)
有没有办法像编译的 ObjC 代码那样强制 bash 脚本提示输入密码?如果 Bash 不能做到这一点,那么 Applescript 可以吗?
目前在新的 Mac 照片应用程序中没有播放视频的键盘快捷键。https://discussions.apple.com/thread/6996731?start=0&tstart=0
与其在数百次手动单击“播放”按钮时感到沮丧,我想运行 Applescript 以使用键盘快捷键播放/暂停。我尝试没有成功:告诉应用程序“照片”“播放”视频结束告诉任何有关此问题的帮助建议将不胜感激。谢谢
我如何将用户在 AppleScript 中输入的句子转换为每个单词的单独变量。例如,Lorem ipsum dolor sit amet会被空间分割成不同的变量,例如。var1 = lorem, var2 = ipsum等等。以下是我到目前为止的想法,但我显然一无所获。
set TestString to "1-2-3-5-8-13-21"
set myArray to my theSplit(TestString, "-")
on theSplit(theString, theDelimiter)
-- save delimiters to restore old settings
set oldDelimiters to AppleScript's text item delimiters
-- set delimiters to delimiter to be used
set AppleScript's text item delimiters to theDelimiter
-- create the array
set theArray to every text item of theString
-- restore the old setting
set AppleScript's text item delimiters …Run Code Online (Sandbox Code Playgroud) applescript ×10
macos ×2
appleevents ×1
bash ×1
download ×1
ios ×1
permissions ×1
photos ×1
reference ×1
safari ×1
scripting ×1
shell ×1
string ×1
variables ×1
xcode ×1