这种特殊情况非常容易,因为您根本不需要任何报价;所有特殊字符都已经在引号内。尝试:
cmd /c ruby -e "File.open('c:\replace_me', 'w') { |f| f.write(File.read('C:/Documents and Settings/All Users/Application Data/replace_me')) }"
在更一般的情况下,您可能需要使用插入符号来引用命令 shell 将解释的那些字符。我认为这是正确的:
cmd /c ruby -e ^"File.open('c:\replace_me', 'w') { ^|f^| f.write(File.read('C:/Documents and Settings/All Users/Application Data/replace_me')) }^"
但是,根据上下文(即,整个命令本身是否由命令 shell 解析),您可能需要双引号:
cmd /c ruby -e ^^^"File.open('c:\replace_me', 'w') { ^^^|f^^^| f.write(File.read('C:/Documents and Settings/All Users/Application Data/replace_me')) }^^^"
要问自己的另一个问题是您是否真的需要命令外壳。在几乎所有情况下,最简单的方法都应该可以完美运行:
ruby -e "File.open('c:\replace_me', 'w') { |f| f.write(File.read('C:/Documents and Settings/All Users/Application Data/replace_me')) }"