簡體   English   中英

如何在 Windows 上的 Ruby 中尋址 UNC 路徑?

[英]How do I address a UNC path in Ruby on Windows?

我正在嘗試通過 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

嘗試用另一個 '\\' 轉義 '\\'

Dir.entries('\\\\\\\\192.168.10.1\\\\share')

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:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM