7

「C:\Documents and Settings\test.exe」ディレクトリにファイルがあり`C:\Documents and Settings\test.exeますが、Rubyでコマンドを実行するために使用される単一のqoutes(このボックスには表示できません)でコマンドを記述すると、これを行うことができず、受け取ったエラーは「ファイルまたはディレクトリが見つかりません」です。「\」を「//」と「\」に置き換えてみましたが、何も機能しないようです。system、IO.popen、および exec コマンドも使用しましたが、すべての努力が無駄です。また、実行コマンドは、プログラムを終了させますが、これは望ましくありません。

前もって感謝します。

4

2 に答える 2

8

バックティック環境は二重引用符のようなものなので、エスケープにはバックスラッシュが使用されます。さらに、Ruby はスペースをコマンドライン引数の区切りとして解釈するため、全体を引用する必要があります。

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

もう 1 つのオプションはsystem、2 番目の引数を使用して強制することです。複数の引数を取得する場合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
于 2011-08-25T12:29:39.203 に答える
6
`"C:\Documents and Settings\test.exe"`

また

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

または引用符で何でも

于 2011-04-03T18:24:36.257 に答える