سؤال

أحاول الوصول إلى مسار الشبكة في البرنامج النصي Ruby الخاص بي على منصة Windows بتنسيق مثل هذا.

\\servername\some windows share\folder 1\folder2\

الآن إذا حاولت استخدام هذا كمسار ، فلن يعمل. لا يتم هروب الانزلاق العكسي بشكل صحيح لهذا البرنامج النصي.

path = "\\servername\some windows share\folder 1\folder2\"
d = Dir.new(path)

جربت كل ما يمكن أن أفكر فيه للهروب بشكل صحيح في المسار. ومع ذلك ، لا يمكنني الهروب من هذا الانزلاق العكسي - بسبب المعنى الخاص. لقد جربت عروض أسعار واحدة ، عروض أسعار مزدوجة ، هروب عكسيًا خلفًا ، باستخدام علامات اقتباس بديلة مثل ٪ q {} أو ٪ q {} ، باستخدام ASCII إلى تحويل char. لا شيء يعمل بمعنى أنني لا أفعل ذلك بشكل صحيح. :-) في الوقت الحالي ، يتمثل حل Temp في تعيين محرك الشبكة N: يشير إلى هذا المسار والوصول إليه بهذه الطريقة ، ولكن هذا ليس حلًا.

هل لدى أي شخص أي فكرة عن كيفية الهروب بشكل صحيح من عمليات التراجع العكسي؟

شكرًا لك

هل كانت مفيدة؟

المحلول

فقط مضاعفة في كل اندلاء عكسي ، مثل ذلك:

"\\\\servername\\some windows share\\folder 1\\folder2\\"

نصائح أخرى

جرب هذا

puts '\\\\servername\some windows share\folder 1\folder2\\'
#=> \\servername\some windows share\folder 1\folder2\

طالما أنك تستخدم علامات اقتباس واحدة لتحديد السلسلة الخاصة بك (على سبيل المثال ، 'foo') ، واحد \ لا يحتاج إلى الهروب. إلا في الحالتين التاليتين

  1. \\ تعمل نفسها على واحد \. لذا، \\\\ سوف يعطيك البداية \\ انت تحتاج.
  2. الزائدة \ في نهاية طريقك ، سيحاول الهروب من الاقتباس الختامي حتى تحتاج إلى ملف \\ هناك ايضا.

بدلاً عن ذلك،

يمكنك تحديد مساعد أنيق لنفسك. بدلا من استخدام clunky \ فواصل المسار ، يمكنك استخدامها / بالتزامن مع طريقة مثل هذه:

def windows_path(foo)
  foo.gsub('/', '\\')
end

puts windows_path '//servername/some windows share/folder 1/folder2/'
#=> \\servername\some windows share\folder 1\folder2\

حلو!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top