16

我正在尝试以这样的格式在 Windows 平台上访问我的 ruby​​ 脚本中的网络路径。

\\servername\some windows share\folder 1\folder2\

现在,如果我尝试将其用作路径,它将无法正常工作。此脚本未正确转义单个反斜杠。

path = "\\servername\some windows share\folder 1\folder2\"
d = Dir.new(path)

我尝试了我能想到的一切来正确地避开路径中的斜线。但是我无法逃避那个单一的反斜杠——因为它有特殊的含义。我尝试了单引号、双引号、转义反斜杠本身、使用备用引号(例如 %Q{} 或 %q{})、使用 ascii 到 char 转换。从某种意义上说,我做的不对。:-) 现在临时解决方案是映射网络驱动器 N:\ 指向该路径并以这种方式访问​​它,但这不是解决方案。

有谁知道如何正确转义单个反斜杠?

谢谢

4

2 回答 2

24

只需将每个反斜杠加倍,如下所示:

"\\\\servername\\some windows share\\folder 1\\folder2\\"
于 2010-05-05T15:57:22.523 回答
14

尝试这个

puts '\\\\servername\some windows share\folder 1\folder2\\'
#=> \\servername\some windows share\folder 1\folder2\

只要您使用单引号来定义字符串(例如,'foo'),\就不需要转义单引号。除了以下两种情况

  1. \\自己解决一个单一的\. 所以,\\\\会给你\\你需要的开始。
  2. 路径末尾的尾随\将尝试转义结束引号,因此您也需要一个\\那里。

或者,

你可以为自己定义一个优雅的助手。除了使用笨重的\路径分隔符之外,您还可以/结合使用如下方法:

def windows_path(foo)
  foo.gsub('/', '\\')
end

puts windows_path '//servername/some windows share/folder 1/folder2/'
#=> \\servername\some windows share\folder 1\folder2\

甜的!

于 2010-05-05T15:57:52.667 回答