Ответ 1
Просто удвоить каждую обратную косую черту, например:
"\\\\servername\\some windows share\\folder 1\\folder2\\"
Я пытаюсь получить доступ к сетевому пути в моем ruby script на платформе Windows в таком формате.
\\servername\some windows share\folder 1\folder2\
Теперь, если я попытаюсь использовать это как путь, это не сработает. Для этого script не выполняются одиночные обратные косые черты.
path = "\\servername\some windows share\folder 1\folder2\"
d = Dir.new(path)
Я пробовал все, что мог подумать, чтобы правильно скрыть следы на пути. Однако я не могу избежать этой единственной обратной косой черты - из-за этого особый смысл. Я пробовал одинарные кавычки, двойные кавычки, избегая обратной косой черты, используя альтернативные кавычки, такие как% Q {} или% q {}, используя ascii для преобразования char. Ничто не работает в некотором смысле, что я не делаю это правильно.:-) В настоящее время временное решение - это сопоставление сетевого диска N: \, указывающего на этот путь и доступ к нему таким образом, но это не решение.
Кто-нибудь знает, как правильно избежать одиночных обратных косых черт?
Спасибо
Просто удвоить каждую обратную косую черту, например:
"\\\\servername\\some windows share\\folder 1\\folder2\\"
Попробуйте это
puts '\\\\servername\some windows share\folder 1\folder2\\'
#=> \\servername\some windows share\folder 1\folder2\
Пока вы используете одинарные кавычки для определения вашей строки (например, 'foo'
), один \
не нужно экранировать. , за исключением следующих двух случаев
\\
работает только с одним \
. Итак, \\\\
предоставит вам начальный \\
.\
в конце вашего пути попытается избежать закрывающей цитаты, поэтому вам понадобится \\
.Вы можете определить для себя элегантный помощник. Вместо использования неуклюжих разделителей путей \
вы можете использовать /
в сочетании с таким способом:
def windows_path(foo)
foo.gsub('/', '\\')
end
puts windows_path '//servername/some windows share/folder 1/folder2/'
#=> \\servername\some windows share\folder 1\folder2\
Сладкое!