gpt4 book ai didi

ruby - 如何使用 Ocra 捆绑文件夹

转载 作者:太空宇宙 更新时间:2023-11-03 16:26:43 24 4
gpt4 key购买 nike

我只想知道以下是否可行:

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

希望这一切都有意义。非常感谢任何帮助。

最佳答案

如果我理解正确,您的程序很难找到您的文本文件所在的目录。我猜您的输入和输出文件夹位于您要运行的 exe 文件的相对文件夹中。 Dir.chdir File.dirname($0) 为您提供临时目录中 exe 文件的临时版本。您的程序需要知道原始 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。

时间有点紧,但希望这对您有所帮助。祝你好运。

关于ruby - 如何使用 Ocra 捆绑文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23685376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com