読者です 読者をやめる 読者になる 読者になる

ザキンコのブログ

ザキンコの日記のはてなブログ版です。


Windows版Rubyで外部コマンドを実行してその出力を得たい時メモ

Windows上でffprobe.exeに動画ファイルを渡してDurationを得てそれをRubyで処理したいのだが、普通だったら「`」でコマンド出力を得ればいいのだけどこれはstdoutしか取れないので、stderrに出力するffprobeはそのままだと取れない。ただ、Windowsのcmdはstderrをstdoutにリダイレクトできるので、それで出力を得ることができた。

ffprobe = 'C:/bin/ffprobe.exe'
arg = 'C:/temp/hoge.mpg'
output_s = `#{ffprobe} #{arg} 2>&1`

参考
コマンド プロンプトからのエラー メッセージをリダイレクトする: 標準エラー出力/標準出力
http://support.microsoft.com/kb/110930/ja