5

我正在尝试通过irbWindows 访问 UNC 共享。在 Windows shell 中它会是

\\server\share

我尝试转义所有反斜杠。

irb(main):016:0> Dir.entries '\\\\server\share'
Errno::ENOENT: No such file or directory - \\server\share

并使用 IP 地址而不是名称

irb(main):017:0> Dir.entries '\\\\192.168.10.1\share'
Errno::ENOENT: No such file or directory - \\192.168.10.1\share
4

3 回答 3

7

尝试用另一个 '\' 转义 '\'

Dir.entries('\\\\\\\\192.168.10.1\\\\share')
于 2010-10-22T09:57:25.943 回答
6

Ruby 以POSIX 方式解释路径,这意味着您应该尽可能使用正斜杠。

//server/share

尾部斜杠是不必要的,就像在本机 Windows 中一样。您可以使用反斜杠,但必须使用另一个反斜杠对其进行转义。

\\\\server\\share

我只建议当您直接从本机程序传递 UNC 路径并且无法转换它们时。当我混合 Ruby/Windows 路径时,例如在使用 Ruby 方法和本机 Windows 应用程序的构建脚本中,每个都需要不同的路径,我将使用一些帮助程序:

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

def posix_path(value)
  value.gsub '\\', '/'
end

始终将路径括在单引号中,如果它们是文字的话,或者如果你正在插值,则使用双引号。正斜杠告诉 Ruby 开始解释正则表达式。这是我在 irb 中的常见错误。

irb> File.exists? //server/share
SyntaxError: (irb):2: unknown regexp options - rvr
于 2013-08-03T14:45:40.293 回答
0

看起来你错过了尾随斜杠。尝试'\\server\share\'

它类似于 Windows 驱动器的根目录。那是C:\,不是C:

于 2010-10-22T09:30:42.170 回答