[英]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.