我只想知道以下情况是否可能:
我创建ruby可执行文件的目标是能够为我的ruby脚本添加一些可移植性。该脚本所做的是收集放在某个目录中的一些.txt文件,然后对它们进行处理,并将.txt结果输出到另一个文件目录中。
没有ocra,这与我的脚本工作得很好,因为我只是让我的脚本搜索位于其当前工作目录中的某个文件夹名称,并处理其中的所有.txt并将其结果输出到另一个特定的文件夹中。
我的问题是,我可以让ocra创建的最终.exe文件做同样的事情吗?
当前的问题是,当我运行以下命令时:
ocra myscript.rb use_this_folder/然后将生成的"myscript.exe“移动到另一个"use_this_folder”副本所在的位置,它无法识别该文件夹。
在我的ruby脚本的顶部,我放置了:
$:.unshift File.dirname($0)
Dir.chdir File.dirname($0)希望这一切都有意义。任何帮助都是非常感谢的。
发布于 2016-03-10 05:48:28
如果我理解正确的话,你的程序很难找到你的文本文件所在的目录。我猜你的输入和输出文件夹在你想要运行的exe文件的相对文件夹中。Dir.chdir File.dirname($0)为您提供临时目录中的exe文件的临时版本。您的程序需要知道原始exe的位置。您的可执行文件所在位置存储在此变量中:ENV["OCRA_EXECUTABLE"]。使用此命令将工作目录更改为exe所在的目录:
Dir.chdir File.dirname(ENV["OCRA_EXECUTABLE"]) if ENV["OCRA_EXECUTABLE"]例如,此脚本的exe位于另一个驱动器根目录下名为"MyProgram“的文件夹中:
Dir.chdir File.dirname($0)
p Dir.pwd
Dir.chdir File.dirname(ENV["OCRA_EXECUTABLE"]) if ENV["OCRA_EXECUTABLE"]
p Dir.pwd由exe文件运行时输出以下内容:
"C:/Users/User/AppData/Local/Temp/ocr7293.tmp/src"
"D:/MyProgram"if ENV["OCRA_EXECUTABLE"]是一段代码,它询问如果目录是ocra exe文件,是否要更改目录。如果没有if语句,环境变量为nil,Dir.chdir将抛出异常,因为它不能将目录更改为nil。
时间有点短,但希望这能有所帮助。祝好运。
https://stackoverflow.com/questions/23685376
复制相似问题