سؤال نسخ مسار شبكة UNC (وليس حرف محرك الأقراص) للمسارات على محركات الأقراص المعينة من مستكشف Windows


أرغب دائمًا في مشاركة مسارات شبكة Windows مع الملفات مع أشخاص آخرين في فريقي عبر البريد الإلكتروني أو الدردشة. لدينا الكثير من محركات الأقراص المعينة هنا ، وكلاهما أنشأنا أنفسنا وتلك التي أقامها أطبائنا في مجال تكنولوجيا المعلومات. ما أود أن أكون قادرًا على القيام به هو نسخ المسار الحقيقي الكامل (وليس حرف محرك الأقراص) من مستكشف Windows لإرساله إلى الأشخاص.

مثال: لدي ملف في محركي "Q:" ، \\ cartman \ users \ emueller ، وأريد إرسال رابط إلى ملف foo.doc فيه إلى زملاء العمل. عند نسخ مسار الملف (shift + النقر بزر الماوس الأيمن ، "نسخ كمسار") ، فإنه يحصل على اسم الملف "Q: \ foo.doc" في الحافظة. هذا غير مفيد للآخرين ، الذين يحتاجون إلى رؤية \\ cartman \ users \ emueller \ foo.doc لتتمكن من استخدام الرابط.

في مستكشف يعرف بوضوح المسار الكامل - في شريط العنوان أرى "الكمبيوتر -> emueller (\\ cartman \ users) (Q :) ->". هل هناك طريقة للقول "يا رجل نسخ هذا المسار كنص مع \\ cartman \ المستخدمين \ emueller وليس س: في ذلك؟"

أعلم أنه يمكنني فقط إعداد مواقع الشبكة المعيَّنة بدلاً من محركات الأقراص المعيّنة لتلك التي أقوم بإعدادها شخصيًا وتجنب هذه المشكلة ، ولكن معظم محركات الأقراص المعينة مثل مشاركة "المستخدمين" تأتي من سياسة تقنية المعلومات للشركة ولا يمكن يتم تجاوزها. يمكنني فقط إنشاء موقع منفصل للشبكة ثم تجاهل محرك الأقراص Q: لكن ذلك غير مريح (ويقومون بذلك حتى يتمكنوا من نقل الحسابات عبر الخوادم). تأكد من أن مسار البريد الإلكتروني الخاص بي قد ينكسر في نهاية المطاف لأنني أفقد استبعاد حرف محرك الأقراص ولكن هذا أمر جيد معي.


77
2018-02-11 15:29


الأصل


إذا كنت تعمل في بيئة مؤمّنة للشركات حيث لا يمكنك تثبيت أي تطبيقات تابعة لجهات خارجية و / أو الوصول إلى السجل ، فسيعمل هذا الحل ... superuser.com/a/704374/46099 - Richard


الأجوبة:


كان لدي نفس المشكلة بالضبط - لم يكن لدى الجميع نفس محركات الأقراص المعينة معي ، أو تم تعيينها إلى نفس الأحرف.

بعد الكثير من البحث وجدت امتداد قائمة السياق المسمى نسخة المسار نسخة على جيثب (https://pathcopycopy.github.io/) وهي عبارة عن نسخة موسعة من ملحق قديم مماثل (يسمى Pathcopy) يحتوي على عدد غير قليل من الخيارات لنسخ المسارات كنص ، بما في ذلك مسار مسارات UNC - فيما يلي مثال على الخيارات المتاحة:

Path Copy Context Menu example

يمكنك أيضًا اختيار إظهار سطر واحد أو سطرين فقط في قائمة السياقات الأساسية ، على سبيل المثال ، يمكنك الحصول على سطرين ، ونسخ مسار طويل ، ونسخ مسار UNC نسخة طويلة. إنه أمر رائع لإرسال بريد إلكتروني إلى المستخدمين في شركتك ممن لديهم حق الوصول إلى مسار شبكة ، وإذا كان لديهم نفس تخطيط الشبكة كما هو ، فيمكنك اختيار السابق ، وإلا يمكنك استخدام هذا الأخير.

تحديث: اعتبارًا من الإصدار 12.0 ، يتوفر مثبت "محمول" جديد على الموقع أعلاه ، والذي يتم تثبيته فقط للمستخدم الحالي في AppData\Local مجلد. لم أحاول هذا ، ولكن يمكن أن يكون الحل لأولئك الذين يحظر عليهم تثبيت بشكل طبيعي.


41
2017-08-24 23:20



فوضوي قليلا ، أنا أفضل كثيرا استخدام صافي كما اقترحه جيمبو. - Jonas Byström


ربما شوطا طويلا حول ولكن فتح نافذة كمد. ثم افعل net use > filename

ثم افتح اسم الملف ويمكنك الحصول على المسار:
مثلا:

C:\Users\me\net use > drives.txt

افتتاح drives.txt

New connections will be remembered.
Status       Local     Remote                    Network
-------------------------------------------------------------------------------
             H:        \\server\c\proj\net       Microsoft Windows Network

يمكن نسخ \\server\c\prog\net من الملف لاستخدامك.

أتمنى أن يساعدك هذا.


47
2018-04-19 17:19



بسيطة وسهلة. جميع الحلول الأخرى في الموضوع كبيرة الحجم ... - radistao
أو ، تخطي فقط "> drives.txt" ونسخ مسار outputted مباشرة من نافذة طرفية. - DarenW
بسيط سهل. يفوز. - CAD bloke
مع msysgit / باش في متناول يديك هذا هو أسهل بكثير من الحلول الأخرى. كبير! - Jonas Byström


تحديث:  نهج CoolCool ل هو أسهل من الألغام. التصويت على إجابته.


35
2017-07-26 21:41



لا أرى الأشياء الموصوفة. - DarenW
أي جزء لا يمكنك رؤيته؟ يمكنك إنشاء الارتباط التشعبي؟ هل تعرف كيفية تحرير الرابط؟ - kmote
في الخطوة الثالثة ، إذا قمت بكتابة حرف وحذفه ، فستقوم بتحديث "النص إلى العرض" ، وهو أسهل من النسخ / اللصق. - 79E09796
لا تحتاج إلى كتابة حرف في "النص إلى العرض" ثم حذفه ، فقط قم بحذفه. - Bae
انظر إجابة كول كول superuser.com/a/922152/190599 لتسريع النسخة عن طريق النقر بزر الماوس الأيمن على "إنشاء اختصار هنا" الخيار. - Bae


جيف كان في الأساس على الفور ، ولكن لأخذها خطوة أخرى إلى الأمام ،

  1. RIGHT-DRAG المجلد من مستكشف Windows ، في نص الرسالة الإلكترونية الجديدة ،
  2. ثم اختر "إنشاء ارتباط تشعبي هنا".

23
2018-06-01 08:49



أسرع وأكثر من خارج الصندوق - Alex
يجب أن تكون أفضل إجابة حيث تظهر المشكلة في معظمها في بيئة الشركة ولا يمكنك تثبيت البرامج بنفسك. - berezovskyi
يجب دمج هذا مع إجابة الكوت superuser.com/a/454119/190599 كما أن الاثنين معا بسرعة فائقة - Bae


لقد كنت بحاجة إلى نفس الشيء الذي يسأله OP ، وبعد البحث على Google وقراءة الإجابات ، لم يقدم أي منهم ما أعتقد أنه أنا و OP نبحث عنه.

المشكلة هنا هي أن واحد قد يعين على مشاركة شبكة ل Drive Y بينما قد يكون لشخص آخر في المؤسسة نفس مشاركة الشبكة التي تم تعيينها كـ Drive X. لذلك ، إرسال رابط مثل Y:\mydirectory قد لا يعمل لأي شخص آخر إلا أنا.

كما يوضح OP ، يعرض Explorer المسار الفعلي في شريط Explorer ، ولكن لا يمكنك نسخه (الكتابة مملة وعرضة للأخطاء ، لذلك هذا ليس خيارًا) حتى إذا اخترت copy as path من قائمة السياق:

enter image description here

لذلك كان الحل الذي توصلت إليه (عن طريق نسخ رمز شخص آخر) هو برنامج C # صغير يمكنك الاتصال به من قائمة السياق في Explorer وسيسمح لك بترجمة حرف محرك الأقراص المعين إلى الفعلي UNC path.

هنا الرمز:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Utils
{
    //This is the only piece of code I wrote
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            //Takes the parameter from the command line. Since this will
            //be called from the context menu, the context menu will pass it 
            //via %1 (see registry instructions below)
            if (args.Length == 1)
            {               
                Clipboard.SetText(Pathing.GetUNCPath(args[0]));
            }
            else
            {   
               //This is so you can assign a shortcut to the program and be able to
               //Call it pressing the shortcut you assign. The program will take
               //whatever string is in the Clipboard and convert it to the UNC path
               //For example, you can do "Copy as Path" and then press the shortcut you  
               //assigned to this program. You can then press ctrl-v and it will
               //contain the UNC path
                Clipboard.SetText(Pathing.GetUNCPath(Clipboard.GetText()));           
            }
        }
    }
}

وهنا Pathing تعريف الفئة (سأحاول العثور على المصدر الفعلي حيث لا أتذكر أين وجدته):

public static class Pathing
{
    [DllImport("mpr.dll", CharSet = CharSet.Unicode, SetLastError = true)]
    public static extern int WNetGetConnection(
        [MarshalAs(UnmanagedType.LPTStr)] string localName,
        [MarshalAs(UnmanagedType.LPTStr)] StringBuilder remoteName,
        ref int length);
    /// <summary>
    /// Given a path, returns the UNC path or the original. (No exceptions
    /// are raised by this function directly). For example, "P:\2008-02-29"
    /// might return: "\\networkserver\Shares\Photos\2008-02-09"
    /// </summary>
    /// <param name="originalPath">The path to convert to a UNC Path</param>
    /// <returns>A UNC path. If a network drive letter is specified, the
    /// drive letter is converted to a UNC or network path. If the 
    /// originalPath cannot be converted, it is returned unchanged.</returns>
    public static string GetUNCPath(string originalPath)
    {
        StringBuilder sb = new StringBuilder(512);
        int size = sb.Capacity;

        // look for the {LETTER}: combination ...
        if (originalPath.Length > 2 && originalPath[1] == ':')
        {
            // don't use char.IsLetter here - as that can be misleading
            // the only valid drive letters are a-z && A-Z.
            char c = originalPath[0];
            if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
            {
                int error = WNetGetConnection(originalPath.Substring(0, 2),
                    sb, ref size);
                if (error == 0)
                {
                    DirectoryInfo dir = new DirectoryInfo(originalPath);

                    string path = Path.GetFullPath(originalPath)
                        .Substring(Path.GetPathRoot(originalPath).Length);
                    return Path.Combine(sb.ToString().TrimEnd(), path);
                }
            }
        }

        return originalPath;
    }
}

يمكنك بناء البرنامج ووضع الملف القابل للتنفيذ في مكان ما في جهاز الكمبيوتر الخاص بك ، على سبيل المثال ، في c:\Utils

يمكنك الآن إضافة خيار قائمة السياق في Explorer على النحو التالي:

رجديت وثم:

HKEY_CLASSES_ROOT\*\Directory\Shell

Right-click Shell --> New Key --> Name: "To UNC Path"
Right-click To UNC Path --> New Key --> Name: command
Right-click Default entry and select `Modify`
Value Data: c:\Utils\Utils.exe "%1"

انتهيت. الآن سترى هذا الخيار عند النقر بزر الماوس الأيمن فوق دليل من محرك أقراص معيّن:

enter image description here

ملحوظة

يمكنني توفير الملف التنفيذي حتى لا تضطر إلى القيام بالتجميع بنفسك. ببساطة ترك لي ملاحظة هنا.


17
2017-08-24 20:23



سيكون من الرائع إذا قمت بسحب الملف القابل للتنفيذ ووضعه في مكان عام مثل Dropbox عامة المجلد وقدمت رابطًا هنا. =) - ADTC
وهناك الكثير من العمل ، وأنا أفضل بكثير استخدام صافي كما اقترحه جيمبو. - Jonas Byström
@ JonasByström ولكن النتيجة النهائية هي لطيفة كما يحصل لسؤال OP. لذا فإن "الكثير من العمل" هو بالضبط ما يربح هذا الجواب في التصويت ، على الرغم من أنني لن أستخدمه بشكل شخصي - sehe
sehe إذا كان ذلك "على وجه التحديد" ، فسيكون أكثر ربحًا إذا أضاف مزيدًا من الخطوات ، ربما باستخدام Norton anti-virus واستخدام مطرقة للكتابة على لوحة المفاتيح. المحتمل. بعض الناس صوتوا لصالحه سارة بالين. وماذا في ذلك؟ يفعل ذلك ضعيف الأفعال ما يفعلونه ، ولكن لا يبرر ذلك. "النقد البناء" أعتقد أن ما يسمى أعلاه. - Jonas Byström


تشغيل cmd.exe أمر net use:

C:\anywhere>net use
New connections will be remembered.
Status       Local     Remote                    Network
-------------------------------------------------------------------------------
OK           E:        \\XXXXX-XXX-XXX.whatever.com\d$
                                                Microsoft Windows Network
OK           G:        \\YYYYY-Y-YY01\SAN_INTERNAL\DEPARTMENT
                                                Microsoft Windows Network
OK           H:        \\ZZZZ-Z-ZZ01\Users$\myself
                                                Microsoft Windows Network
OK                     \\AAAAA-AAA-AAAA3\d$     Microsoft Windows Network

(شكرا جيمبو ، الخاص بك إجابة كان جيدا ولكن ليس باختصار!)


11
2017-10-16 12:16



يؤسفني أنه ليس لدي سوى صوت واحد لتقديمه. هذا هو في الواقع موجزة. شكر. - user26398
هذا هو النهج المثالي - Ryan B.


شخص يدعى شون كين قدم حل لهذا في منتدى Windows 7 على موقع Microsoft على الويب. هو في ميزة تسمى Network Place.

  1. افتح مستكشف Windows.

  2. انقر بزر الماوس الأيمن على إدخال الكمبيوتر في الجزء الأيمن وحدد "إضافة موقع شبكة". انقر فوق التالي.

  3. حدد الخيار "اختيار موقع شبكة مخصصة" (كان هو الخيار الوحيد المقدم لي) وانقر فوق التالي.

  4. اكتب مسار UNC المطلوب وانقر فوق التالي مرتين. يؤدي ذلك إلى إضافة إدخال يظهر في الجزء الأيمن من مستكشف Windows أسفل الموضع المعين   محركات الأقراص ، لكنه يعمل تماما مثل محرك الأقراص المعين ويظهر بهذه الطريقة في   مربع حوار حفظ التطبيقات.

  5. في مستكشف Windows ، انتقل عبر هذا الإدخال إلى الدليل الفرعي المطلوب وانقر في المساحة الفارغة على يمين الخبز   عرض المسار الفتات في الجزء العلوي من شاشة مستكشف Windows و   يظهر مسار UNC ويتم تمييزه.


5
2018-02-17 12:04



إذا كنت ستستشهد بمصدر آخر فهل يمكنك ربطه بهذا المصدر أيضًا؟ - DMA57361
في الأصل من هذه المشاركة - لم يتم تحديد مصدر W7 هناك: countrykeepers.com/wp/؟p=3017 - Mark
مهلا ، شكرا ل chiming فيها. وأنا أعلم عن هذا ، وهذا ما قصدته "يمكنني فقط إعداد مواقع الشبكة المعينة بدلا من محركات الأقراص المعينة" في السؤال - هو أن العديد منهم يأتي لي محركات الأقراص المعينة مجاملة بلدي تكنولوجيا المعلومات قسم ، وأود أن تكون قادرة على ربط تلك. لكن هذا بالتأكيد حل ممكن لبعض المشاكل! - Ernest Mueller
ملاحظة سأصوت على إجابتك ، ولكن ليس لديك ما يكفي من الممثلين ، لذلك "Virtual +1!" - Ernest Mueller


  1. افتح المجلد.
  2. اسحب الملف من المجلد إلى Microsoft Word.

4
2017-11-13 15:35





معلق تحول أسفل وانقر بزر الماوس الأيمن على الملف واختر "نسخ كمسار". قم بإدراج ارتباط تشعبي في البريد الإلكتروني والصقه في حقل العنوان لمربع حوار الارتباط التشعبي.

بعد إنشاء الرابط التشعبي في البريد الإلكتروني ، تكون قد انتهيت.

سيظهر الارتباط حرف محرك الأقراص المعين هذا صحيح. عندما ينقر المستلم (المستلمون) على الرابط الموجود في البريد الإلكتروني ، فسوف يتبع مسار UNC ما إذا كان المستخدم قد تم تعيينه أم لا.

لقد حاولت ذلك في تطبيقات Office 2010 الأخرى ، و Excel ، و Power Point ، و Word.


3
2017-10-02 19:04



هذا يعمل ، لكنه هو نفس الجواب الجواب كموتي - davidmneedham