我正试图通过irbWindows 访问UNC共享.在Windows shell中它将是
\\server\share
Run Code Online (Sandbox Code Playgroud)
我试图逃避所有的反斜杠.
irb(main):016:0> Dir.entries '\\\\server\share'
Errno::ENOENT: No such file or directory - \\server\share
Run Code Online (Sandbox Code Playgroud)
并使用IP地址而不是名称
irb(main):017:0> Dir.entries '\\\\192.168.10.1\share'
Errno::ENOENT: No such file or directory - \\192.168.10.1\share
Run Code Online (Sandbox Code Playgroud)
尝试用另一个'\'来逃避'\'
Dir.entries( '\\\\ 192.168.10.1 \\共享')
Ruby以POSIX方式解释路径,这意味着你应该尽可能使用正斜杠.
//server/share
Run Code Online (Sandbox Code Playgroud)
尾部斜杠是不必要的,就像在本机Windows中一样.您可以使用反斜杠,但他们必须逃脱用一个反斜杠.
\\\\server\\share
Run Code Online (Sandbox Code Playgroud)
我只建议你直接从本机程序传递UNC路径而不能转换它们.当我混合Ruby/Windows路径时,比如使用Ruby方法和本机Windows应用程序的构建脚本,每个需要不同的路径,我会使用一些帮助程序:
def windows_path(value)
value.gsub '/', '\\'
end
def posix_path(value)
value.gsub '\\', '/'
end
Run Code Online (Sandbox Code Playgroud)
如果您是路径,请始终将路径用单引号括起来,如果是内插则用双引号括起来.正斜杠告诉Ruby开始解释正则表达式.对于我来说,这是一个常见的错误.
irb> File.exists? //server/share
SyntaxError: (irb):2: unknown regexp options - rvr
Run Code Online (Sandbox Code Playgroud)