2014-05-15 63 views
2

文件夹我只是想知道以下是可能的:如何捆绑与OCRA

我与创建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) 

希望这一切才有意义。任何帮助是极大的赞赏。

回答

1

如果我理解正确,您的程序在查找您的文本文件所在的目录时遇到了困难。我在猜测您的输入和输出文件夹位于您要运行的exe文件的相对文件夹中。 Dir.chdir File.dirname($0)为您提供临时目录中exe文件的临时版本。您的程序需要知道原始exe文件的位置。你的EXE所在的位置存储在这个变量中:ENV["OCRA_EXECUTABLE"]。使用此选项可以更改工作目录到你的exe程序所在的目录:

Dir.chdir File.dirname(ENV["OCRA_EXECUTABLE"]) if ENV["OCRA_EXECUTABLE"] 

例如,该脚本位于一个文件夹名称“MyProgram”,在不同的驱动器的根目录下的EXE:

"C:/Users/User/AppData/Local/Temp/ocr7293.tmp/src" 
"D:/MyProgram" 

if ENV["OCRA_EXECUTABLE"]有点的代码询问是否改变目录如果它是一个OCRA E:当由所述exe文件运行

Dir.chdir File.dirname($0) 
p Dir.pwd 
Dir.chdir File.dirname(ENV["OCRA_EXECUTABLE"]) if ENV["OCRA_EXECUTABLE"] 
p Dir.pwd 

输出该xe文件。如果没有if语句,则Environment变量为零,并且Dir.chdir将抛出异常,因为它无法将目录更改为nil。

时间不多,但希望这有助于。祝你好运。