[英]What is the best way to write a rakefile to run commands in windows?
作為一個例子,我想在rake下運行以下命令。
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輸入字符串文字
<<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
^
如果我使用單引號,其中一個反斜杠會丟失。
irb(main):001:0> 'copy C:\Media \\other\Media /mir'
=> "copy C:\\Media \\other\\Media /mir"
雙反斜杠被解釋為轉義的單反斜杠。 你應該轉義字符串中的每個反斜杠。
irb(main):001:0> puts 'robocopy C:\\Media \\\\other\\Media /mir'
robocopy C:\Media \\other\Media /mir
或者,如果您確實不想轉義反斜杠,則可以使用帶有單引號標識符的here doc。
irb(main):001:0> <<'HEREDOC'
irb(main):002:0' copy C:\Media \\other\Media /mir
irb(main):003:0' HEREDOC
=> "copy C:\\Media \\\\other\\Media /mir\n"
irb(main):004:0> puts _
copy C:\Media \\other\Media /mir
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.