如何在Windows上使用Ruby解决UNC路径?

时间:2010-10-22 09:09:01

标签: ruby windows unc

我正在尝试通过Windows上的irb访问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

3 个答案:

答案 0 :(得分:5)

尝试用另一个'\'

来逃避'\'

Dir.entries( '192.168.10.1 \\\\ \\份额')

答案 1 :(得分:5)

Ruby解释POSIX way中的路径,这意味着你应该尽可能使用正斜杠。

//server/share

不需要尾部斜杠,就像在本机Windows中一样。您可以使用反斜杠,但必须使用另一个反斜杠{/ 3}}。

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

答案 2 :(得分:0)

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

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

相关问题