例として、レーキの下で次のコマンドを実行します。
robocopy C:\Media \\other\Media /mir
私が動作させることができたrakefileは
def sh(str)
str.tr!('|', '\\')
IO.popen(str) do |pipe|
pipe.each do |line|
puts line
end
end
end
task :default do
sh 'robocopy C:|Media ||other|Media /mir'
end
ただし、文字列リテラルの扱いは厄介です。
ヒアドキュメントを使用して文字列リテラルを入力する場合
<<HEREDOC
copy C:\Media \\other\Media /mir
HEREDOC
エラーが発生します
rakefile.rb:15: Invalid escape character syntax
copy C:\Media \\other\Media /mir
^
rakefile.rb:15: Invalid escape character syntax
copy C:\Media \\other\Media /mir
^
一重引用符を使用すると、バック スラッシュの 1 つが失われます。
irb(main):001:0> 'copy C:\Media \\other\Media /mir'
=> "copy C:\\Media \\other\\Media /mir"