我正在为ExtendScript编写Illustrator CS6的脚本.在我的脚本结束时,我想使用生成一个任务(在Ruby中的第二个脚本)File.execute()
.但是,它不起作用.我对如何调试问题感到茫然 - 我怎么能弄清楚为什么这不起作用?
这是我的ExtendScript文件的结尾:
// Do a bunch of other work, then: var rubyFile = new File(scriptFolder + 'BuildHtmlWalkthrough.rb'); alert(rubyFile.exists); var result = rubyFile.execute(); alert(result);
双方rubyFile.exists
并result
总是为真,表示该脚本启动确定.但是脚本似乎根本没有运行.我尝试过以下诊断:
Ruby脚本确实从命令行运行.脚本的权限是-rwxr-xr-x
我添加了一个调用system("touch /blah/blah/blah")
作为Ruby脚本的第一行.该文件没有被触及.
我想也许ExtendScript进程在Ruby脚本运行之前就已经终止了,所以我之后添加了一个long for循环rubyFile.execute()
.旋转> 30秒没有帮助.
我可以做些什么来调试或解决这个问题?
我在MacOS X v10.9.1上.作为参考,这是以下文档File.execute()
:
File.execute():Boolean
核心JavaScript类
使用适当的应用程序执行或打开此文件,就好像它已在文件浏览器中双击一样.您可以使用此方法来运行脚本,启动应用程序等.如果应用程序启动成功,则立即返回true.
CRGreen.. 5
它可能正在"使用适当的应用程序打开此文件"而不是执行,并返回true,因为文件已成功打开(或已在其关联的应用程序中打开).如果我有一个python脚本,并做
f= new File("~/Documents/misc_scripts/getpixelrgb.py"); f.execute();
,它会在我的脚本编辑器中打开它,即使文件的执行标志已设置.
我在OSX上,顺便说一句
在After Effects中,有system.callSystem()来执行命令行命令,但我担心在Illustrator中不存在(我假设你因为标记而为Illustrator执行此操作).你是OSX还是Windows?通过制作可执行的.app(OSX)或.exe(Win)并使用execute()调用它,可以解决这个问题.如果我这样做,我在OSX上,我会制作一个AppleScript应用程序,它可以执行"执行shell脚本"来进行ruby系统调用.在Windows上,它是不同的.你可能喜欢的一个解决方案,如果你在windows上:ocra,这是特定于ruby的(http://ocra.rubyforge.org/).有可能在Windows上运行调用ruby脚本的.bat文件,但我不确定.
[编辑!]
非常抱歉无关的Windows信息(对于其他人,我猜).刚刚看到你关于在OSX上的说明.因此,您可能希望使用AppleScript解决方案.
[再次编辑]
所以,如果我的ruby脚本("test.rb")是:
#!/usr/bin/env ruby print "Hello"
我的AppleScript是:
do shell script "cd /testing_folder/; ruby test.rb"
然后我在AppleScript中返回"Hello",但ExtendScript将返回true.
它可能正在"使用适当的应用程序打开此文件"而不是执行,并返回true,因为文件已成功打开(或已在其关联的应用程序中打开).如果我有一个python脚本,并做
f= new File("~/Documents/misc_scripts/getpixelrgb.py"); f.execute();
,它会在我的脚本编辑器中打开它,即使文件的执行标志已设置.
我在OSX上,顺便说一句
在After Effects中,有system.callSystem()来执行命令行命令,但我担心在Illustrator中不存在(我假设你因为标记而为Illustrator执行此操作).你是OSX还是Windows?通过制作可执行的.app(OSX)或.exe(Win)并使用execute()调用它,可以解决这个问题.如果我这样做,我在OSX上,我会制作一个AppleScript应用程序,它可以执行"执行shell脚本"来进行ruby系统调用.在Windows上,它是不同的.你可能喜欢的一个解决方案,如果你在windows上:ocra,这是特定于ruby的(http://ocra.rubyforge.org/).有可能在Windows上运行调用ruby脚本的.bat文件,但我不确定.
[编辑!]
非常抱歉无关的Windows信息(对于其他人,我猜).刚刚看到你关于在OSX上的说明.因此,您可能希望使用AppleScript解决方案.
[再次编辑]
所以,如果我的ruby脚本("test.rb")是:
#!/usr/bin/env ruby print "Hello"
我的AppleScript是:
do shell script "cd /testing_folder/; ruby test.rb"
然后我在AppleScript中返回"Hello",但ExtendScript将返回true.