2011-04-20 27 views
1

如何在Ruby應用程序中運行Windows命令?ruby​​中的Windows命令

我試圖運行類似:

output = `cd #{RAILS_ROOT}/lib && java HelloWorld #{param1} #{param2}` 

我打印上一行的結果,然後將其粘貼到Windows命令提示符,它工作得很好。然而,當我運行應用程序,並打這個代碼,輸出是空白的,而不是有一個我從HellowWorld回來的字符串。在我的HelloWorld做是System.out.print( 「HelloWorld」 的)

以下:

output = `cmd.exe /C dir` 
puts "OUTPUT #{output}" 

返回:

輸出

回答

1

反引號工作對我罰款。試試:

output = `dir` 

向你自己證明它正在工作。那時,你的問題是如何從命令行運行Java應用程序,或者爲什麼你的特定應用程序不工作。請注意,您可以像這樣臨時更改工作目錄:

Dir.chdir(File.join(RAILS_ROOT,'lib')) do 
    output = `...` 
end 
+0

謝謝Phrogz。我試着'output ='dir''來證明它正在工作,事實並非如此。輸出中仍然有空白字符串。任何想法可能是什麼問題? – Rafael 2011-04-20 13:43:16

+2

顯示您的代碼。 – fl00r 2011-04-20 13:53:41

+0

@rafael很奇怪;你能包括你的Ruby和Windows版本嗎? – Phrogz 2011-04-20 15:01:34

1

嘗試在此處使用File#join

`cd #{my_path} && java HelloWorld #{param1} #{param2}` 
system("cd #{my_path} && java HelloWorld #{param1} #{param2}") 
%x[cd #{my_path} && java HelloWorld #{param1} #{param2}] 

相關主題:System call from Ruby