如何在Windows上的Ruby中处理UNCpath?

我试图在Windows上通过irb访问UNC共享。 在Windowsshell将是

 \\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 

Solutions Collecting From Web of "如何在Windows上的Ruby中处理UNCpath?"

试着用另一个'\'来逃避'\'

Dir.entries( '\\\\ 192.168.10.1 \\共享')

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 

看起来你错过了斜线。 试试'\\server\share\'

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