RubyからWindowsのコマンドを実行する方法はいくつかあります。主な方法として、system
メソッド、バッククローテーション(`)、
IO.popen、および
Open3`モジュールが挙げられます。
主に、system
メソッドとバッククォート(`\
)を使用した方法が一般的です。
今回は2つ紹介。
system
()メソッドを使用する方法- バッククォート(`)を使用する方法
1. system メソッドを使用する方法
system
メソッドは、指定されたコマンドを子プロセスとして実行します。このメソッドはコマンドの実行結果(標準出力)を返しませんが、コマンドが成功したかどうか(真偽値)を返します。
result = system("dir")
puts result # true または false
特徴:
- コマンドの実行結果は返されない。
- コマンドの成功/失敗が真偽値として返される。
- コマンドの実行結果はコンソールに表示される。
2. バッククォート「`」を使用する方法
バッククォートを使用すると、指定されたコマンドを実行し、その結果(標準出力)を文字列として返します。
output = `dir`
puts output
特徴:
- コマンドの実行結果が文字列として返される。
- コンソールには何も表示されない(返された文字列を明示的に出力しない限り)。
どちらの方法を選ぶかは、目的に応じて選ぶことができます。コマンドの実行結果をプログラム内で利用したい場合はバッククォートを、単にコマンドを実行したいだけの場合はsystem
メソッドを使用するのが一般的です。
powershellスクリプトも実行できる
PowerShell スクリプトを Ruby から実行するには、システムコマンドを使用して powershell コマンドを呼び出すことで実現できます。
script_path = "script.ps1"
system("powershell -ExecutionPolicy Bypass -File #{script_path}")
「-ExecutionPolicy Bypass」は、実行ポリシーの制約を回避するために使用します。ただし、セキュリティリスクがあるため、信頼できるスクリプトのみを実行するようにしてください。