gpt4 book ai didi

ruby - 如何在 Ruby 中执行 Windows CLI 命令?

转载 作者:数据小太阳 更新时间:2023-10-29 07:11:47 24 4
gpt4 key购买 nike

我在目录“C:\Documents and Settings\test.exe”中有一个文件,但是当我用单引号编写命令时 `C:\Documents and Settings\test.exe (我无法在此框中显示),用于在 Ruby 中执行命令,我无法这样做,我收到的错误是找不到文件或目录。我尝试用“//”和“\”替换“\”,但似乎没有任何效果。我也使用过系统、IO.popen 和 exec 命令,但所有的努力都是徒劳的。 exec 命令还使程序退出,这是我不想发生的。

提前致谢。

最佳答案

反引号环境就像双引号,所以反斜杠用于转义。此外,Ruby 会将空格解释为分隔的命令行参数,因此您需要引用整个内容:

`"C:\\Documents and Settings\\test.exe"`

另一种选择是使用 system 并强制使用第二个参数。如果 system 获得多个参数,它将第一个参数视为要执行的命令的路径,您不需要引用命令:

system('C:\Documents and Settings\test.exe','')

注意使用引号,所以我们没有转义反斜杠。

当然,这不会让你得到标准输出/错误,所以如果你使用的是 Ruby 1.9.2,你可以使用非常方便的 Open3 库,它的工作方式类似于 system,但会为您提供有关刚刚运行的进程的更多信息:

require 'open3'

stdout,stderr,status = Open3.capture3('C:\Documents and Settings\test.exe','')

puts stdout # => string containing standard output of your command
puts stderr # => string containing standard ERROR of your command
if status.success?
puts "It worked!"
else
puts "OH NOES! Got exit code #{status.exitstatus}"
end

关于ruby - 如何在 Ruby 中执行 Windows CLI 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5531498/

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