如何使用applescript在photoshop(cs5)中获取当前打开的文件路径?
我在Mac OSX 10.7上使用CS5
我已经尝试了下面的答案,它在Applescript编辑器中给出了以下错误:
error "Adobe Photoshop CS5 got an error: Can’t get document 1.
Invalid index." number -1719 from document 1
Run Code Online (Sandbox Code Playgroud) 我有一个苹果脚本可以做这些事情:
using terms from application "Quicksilver"
on open theseitems
repeat with aitem in theseitems
display dialog aitem as text
end repeat
end open
end using terms from
Run Code Online (Sandbox Code Playgroud)
但我想做的是能够applescript.scpt通过终端开始运行特定文件并传入变量,如文件路径.
osascript ~/applescript.scpt /path/to/my/file.txt
Run Code Online (Sandbox Code Playgroud)
然后让Applescript运行并访问该参数.在这种情况下,它(希望)会显示该路径的对话框,/path/to/my/file.txt
我知道我可以做类似的事情
osascript -e "display dialog "~/path/to/file.txt"
Run Code Online (Sandbox Code Playgroud)
但关键是不要显示Applescript的对话框,而是更多地了解我是否能够将变量传递给脚本文件.
我有一个Automator工作流来ping服务器,并下载我经常使用的计划的最新副本.然后将此计划复制到我的保管箱,以便我可以在手机上查看.在工作流程下载最新计划之前,它会从dropbox中删除旧计划.
除非我没有活动的互联网连接,否则这种方法很有效.当我没有活动的互联网连接时,工作流程仍然会打开Dropbox,删除旧计划,并尝试下载最新的计划.因为没有连接,所以不会下载任何内容.然后,如果我的连接变为活动状态,则空的保管箱将同步,并且计划将从我的手机中删除.
我正在尝试添加几行AppleScript代码来ping服务器以查看我是否有活动连接.如果我不这样做,那么等待大约5秒钟再次ping.我希望有5次ping尝试,此时如果我仍然没有活动连接,那么我想完全退出.
我对applecript很新,所以我对如何处理来自命令的错误感兴趣,在这种情况下,ping.如果命令"ping -o www.apple.com"失败,请等待5秒钟并重试ping.如果5次尝试失败,则完全退出.
AppleScript文档建议以下代码有效地构建列表:
set bigList to {}
set bigListRef to a reference to bigList
set numItems to 100000
set t to (time of (current date)) --Start timing operations
repeat with n from 1 to numItems
copy n to the end of bigListRef
end
set total to (time of (current date)) - t --End timing
Run Code Online (Sandbox Code Playgroud)
注意使用显式引用.这在脚本的顶级或显式运行处理程序中工作正常,但如果您在另一个处理程序中逐字运行相同的完全代码,如下所示:
on buildList()
set bigList to {}
set bigListRef to a reference to bigList
set numItems to 100000
set t to (time of (current date)) --Start timing operations …Run Code Online (Sandbox Code Playgroud) 通过这个简单的AppleScript,我可以列出iTunes中所有歌曲的名称
tell application "iTunes"
set mainLibrary to library playlist 1
repeat with nexttrack in (get every track of mainLibrary)
try
name of nexttrack
end try
end repeat
end tell
Run Code Online (Sandbox Code Playgroud)
然后我使用ScriptEngine将其作为Java 7代码运行,但是很明显如何获取脚本的结果,在这种情况下只是最后一个轨道的名称.
StringBuilder script =new StringBuilder();
script.append("tell application \"iTunes\"\n");
script.append("set mainLibrary to library playlist 1\n");
script.append("repeat with nexttrack in (get every track of mainLibrary)\n");
script.append("try\n");
script.append("name of nexttrack\n");
script.append("end try\n");
script.append("end repeat\n");
script.append("end tell\n");
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("AppleScript");
System.out.println(engine.eval(script.toString()));
How do can I capture the name …Run Code Online (Sandbox Code Playgroud) 我需要一个使用applescript创建的记录列表.我正在尝试在Applescript中创建一个像Hash Table这样的Java.
set grocery_list to {"milk", "butter", "eggs"}
set milk to {name:"Whole Milk", quantity:"1 Gallon", brand:"Newland Farms" }
set butter to {name:"Unsalted Butter", quantity:"1 pound", brand:"Land O Lakes"}
set eggs to {name:"Grade A jumbo eggs", quantity:"1 dozen", brand:"Farm Fresh"}
Run Code Online (Sandbox Code Playgroud)
我需要一种方法来创建这种结构,我可以访问以下内容:
遍历列表,获取单个项目,每个项目获得品牌.
我试过这个
say brand of (item 1 of grocery_list)
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误
Can’t get brand of \"milk\"." number -1728 from brand of "milk"
Run Code Online (Sandbox Code Playgroud)
有没有推荐的方法来实现这个?
提前致谢
我正在使用mac osx 10.8.5在python中创建一个应用程序我通过使用将python脚本转换为应用程序py2app.但是,在app中,On Show Package Contents-->Contents-->Resources原始代码存在.我不希望通过分发我的应用程序作为安全问题来向其他人显示我的代码.我用(.pyc)代码删除了(.py)代码,在这种情况下,应用程序无法正常工作.请为它提供一些方法.我也搜索其他问题,但没有得到预期的结果.我的setup.py是
from setuptools import setup
APP=['myapp.py']
DATA_FILES= [('',['config.cfg'])]
OPTIONS={'iconfile':'cc.icns','argv_emulation': True,'plist':{'CFBundleShortVersionString':'1.0'}}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app']
)
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个keyhortcut来打开当前文件夹中的终端.环顾四周,我发现这个代码创建了一个服务(添加了这个服务的快捷方式的部分就解决了),只添加了一些东西是"; clear"和一些"激活"所以它显示
on run {input, parameters}
tell application "Finder"
activate
set myWin to window 1
set theWin to (quoted form of POSIX path of (target of myWin as alias))
tell application "Terminal"
activate
tell window 1
activate
do script "cd " & theWin & ";clear"
end tell
end tell
end tell
return input
end run
Run Code Online (Sandbox Code Playgroud)
它没有像我想的那样工作.
烦恼:
这是我对Applescript的第一次尝试,所以如果错误很明显我就是看不到它
提前致谢
标题是我想要实现的目标.
在Automator中,我试图简单地记录打开新桌面的行为,然后在其中打开应用程序 - 但我得到了
"Watch Me Do"操作遇到错误.检查操作的属性,然后再次尝试运行工作流程
此外,如果我这样做,记录的操作是"单击桌面4按钮".
同样,我用Google搜索并找到了创建特定桌面的Applescripts(例如桌面3),但我总是打开不同数量的桌面.所以我希望Workflow能够简单地创建一个新的桌面,而不管我已经打开的数量.此外,我发现的许多Applescripts都是针对仍然拥有太空的小牛队而且我有优胜美地.
我可以弄清楚如何使脚本打开日历和提醒,所以主要问题是如何打开它或创建一个新的桌面.
我正在尝试编写一个脚本,将当前+所有下一个选项卡拆分到一个新窗口 \xe2\x80\x94 中,这对于组织非常有用。
\n\n完全有可能获取当前和所有下一个选项卡的 URL,创建一个新窗口并在新选项卡中加载所有这些 URL,然后关闭原始窗口 \xe2\x80\x93 中的选项卡,但这看起来非常麻烦,慢的。
\n\n那么,有没有什么方法可以将一组 Safari 选项卡移动到新窗口,而无需实际重新加载 URL?
\napplescript ×10
macos ×4
automator ×3
action ×1
command-line ×1
desktop ×1
handler ×1
hashtable ×1
java ×1
list ×1
performance ×1
photoshop ×1
py2app ×1
python ×1
reference ×1
safari ×1
scriptengine ×1
scripting ×1
tabs ×1
terminal ×1