File.execute()没有执行我的脚本.如何调试此问题?

 不得不无奈啊 发布于 2023-02-07 12:03

我正在为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.existsresult总是为真,表示该脚本启动确定.但是脚本似乎根本没有运行.我尝试过以下诊断:

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.

1 个回答
  • 它可能正在"使用适当的应用程序打开此文件"而不是执行,并返回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.

    2023-02-07 12:05 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有