Скопіюйте мережевий шлях UNC (не літера диска) для шляхів на відображених накопичувачах із Windows Explorer


87

Я часто хочу ділитися мережевими шляхами Windows до файлів з іншими людьми своєї команди за допомогою електронної пошти чи чату. У нас є багато відображених на диску накопичувачів, як тих, які ми створили самі, так і тих, які створили наші ІТ-господарі. Що я хотів би зробити, це скопіювати повний реальний шлях (а не лист диска) з Windows Explorer, щоб надіслати людям.

Приклад: У мене на диску "Q:" є \ \ cartman \ users \ emueller, і я хочу надіслати посилання на файл foo.doc в ньому колегам. Коли я копіюю шлях до файлу (shift + клацання правою кнопкою миші, «копіювати як шлях»), він отримує назву файла «Q: \ foo.doc» у буфер обміну. Це не допомагає іншим, хто повинен побачити \\ cartman \ users \ emueller \ foo.doc, щоб мати змогу споживати посилання.

В Explorer він чітко знає повний шлях - в адресному рядку я бачу "Комп'ютер -> emueller (\\ cartman \ users) (Q :) ->". Чи є спосіб сказати "ей людина, скопіювавши цей шлях у вигляді тексту з \\ cartman \ users \ emueller, а не Q: у ньому?"

Я знаю, що я міг просто встановити зіставлені локальні розташування замість відображених дисководів для тих, які я створив особисто, і уникнути цієї проблеми, але більшість відображених накопичувачів на зразок "користувачів" походять з нашої корпоративної ІТ-політики та не можуть перекрити Я можу просто зробити окреме мережеве розташування, а потім ігнорувати свій Q: диск, але це незручно (і вони роблять це, щоб вони могли переміщувати акаунти на серверах). Звичайно, мій шлях електронною поштою може врешті-решт зламатися, оскільки я втрачаю непряму букву диска, але це добре для мене.


1
Якщо ви працюєте в заблокованому корпоративному середовищі, де ви не можете встановити жодних сторонніх додатків та / або отримати доступ до реєстру, це рішення спрацює ... superuser.com/a/704374/46099
Річард

Відповіді:


46

У мене була точно така ж проблема - не кожен мав однакові відображені накопичувачі, як я, або відображав ті самі букви.

Після багатого пошуку я знайшов розширення контекстного меню під назвою Path Copy Copy на GitHub ( https://pathcopycopy.github.io/ ), яке є розширеною версією аналогічного, старшого розширення (зване Pathcopy), має досить багато варіантів копіювання контурів. як текст, включаючи один для шляхів UNC - приклад доступних варіантів показаний нижче:

Приклад контекстного меню "Шлях копіювання"

Ви також можете показати лише один або два рядки в базовому контекстному меню, наприклад, у вас можуть бути два рядки: Копіювати довгий шлях та Скопіювати довгий шлях UNC. Він відмінно підходить для надсилання електронною поштою користувачів у вашій компанії, які мають доступ до мережевого шляху, і якщо вони мають таке ж мережеве відображення, як і ви, ви можете вибрати перше, інакше ви можете використовувати останнє.

Оновлення : З версії 12.0 на вищезгаданому сайті доступний новий "портативний" інсталятор, який встановлюється лише для поточного користувача в AppData\Localпапку. Я цього не пробував, але це може бути рішенням для тих, кому заборонено нормально встановлювати.


4
Трохи безладно, я більше віддаю перевагу чистому використанню, як пропонує Джимбо.
Jonas Byström

49

Можливо, довгий шлях, але відкрийте вікно cmd. Тоді робітьnet use > filename

Потім відкрийте ім'я файлу, і ви зможете отримати шлях:
Ex:

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з файлу для вашого використання.

Сподіваюся, це допомагає.


10
просто і легко. Всі інші рішення в темі дуже об'ємні ...
radistao

8
Або просто пропустіть "> Drives.txt" і скопіюйте вихідний шлях прямо з вікна терміналу.
DarenW

1
Просто і легко. Виграти.
CAD блокується

З msysgit / bash під рукою це набагато простіше, ніж інші рішення. Величний!
Jonas Byström

1
net use > filename плутав мене .. і я використав своє фактичне ім'я файлу pdf у цьому місці, таким чином, клобуював свій оригінальний файл PDF. так, я знаю, що це моє погано. так що подбайте. просто використовуйте net useта копіюйте з вікна терміналу. і якщо вам це потрібно дійсно всередині файлу .. тоді ви знаєте, що робити .. `> uncpathnamefile.txt '
ihightower

38

ОНОВЛЕННЯ: Підхід CoolCol навіть простіше, ніж мій. Підтвердіть цю відповідь.

Ось вирішення, яке я використовую, коли надсилаю маршрутизовані шляхи мережі через Outlook:

  1. У Windows Explorer утримуйте shiftкнопку, натисніть на файл і виберіть " Скопіювати як шлях ".
  2. Вставте гіперпосилання в електронну пошту та вставте в адресне поле діалогового вікна гіперпосилання. (Ярлик: ctrl-K ctrl-V+ ОК). У цьому пункті посилання відобразить відображену букву диска як корінь ( Q:\foo.doc).
  3. Тепер, натисніть r та виберіть " Редагувати гіперпосилання ... ", ви помітите, що поле Адреса було переведено назад у повний шлях UNC ( \\cartman\users\emueller\foo.doc). За допомогою миші в полі "Адреса" натисніть ctrl-Aта ctrl-Cскопіюйте повний шлях до буфера обміну, а потім перемістіть курсор у верхнє поле ("Текст для відображення:") ctrl-Aі натисніть ctrl-Vйого правильно, щоб відобразити його у своєму електронному листі.

Я не бачу описаних речей.
DarenW

яку частину ви не бачите? Чи можете ви створити гіперпосилання? Чи знаєте ви, як редагувати посилання?
kmote

3
На кроці 3. якщо ви введете символ і видалите його, він оновить "Текст для відображення", що простіше, ніж копіювати / вставляти.
79E09796

Вам не потрібно вводити символ у "Текст для відображення", а потім видаляти його, просто видаляйте.
Bae

1
Див. Відповідь Coolcol superuser.com/a/922152/190599, щоб пришвидшити копію, натиснувши правою кнопкою миші опцію "Створити ярлик тут".
Bae

29

Джефф був в основному на місці, але щоб зробити його на крок далі,

  1. ПРАВИЛЬНО НАГРУЙТЕ папку з Провідника Windows, в основу вашого нового електронного листа,
  2. потім виберіть "Створити гіперпосилання тут" .

1
найшвидший і найкращий з коробки
Алекс

3
Це має бути найкращою відповіддю, оскільки проблема з’являється в основному в корпоративному середовищі, і ви не можете встановити там програмне забезпечення самостійно.
Березовський

Це потрібно об'єднати з відповіддю kmote superuser.com/a/454119/190599, оскільки вони разом дуже швидкі
Bae

19

У мене просто з’явилася потреба в тому, що запитують ОП, і після пошуку в Google і прочитання відповідей, жоден з них не надав те, що, на мою думку, ОП і я шукаю.

Проблема тут полягає в тому, що можна відобразити спільну мережеву частку, Drive Yтоді як хтось інший в організації може мати таку ж мережеву частку, як і Drive X; отже, надіслати таке посилання, як Y:\mydirectoryможе, не працює ні для кого іншого, крім мене.

Як пояснює ОП, Провідник показує фактичний шлях на панелі Провідника, але ви не можете його скопіювати (введення копітка і схильне до помилок, тому це не є варіантом), навіть якщо ви виберете copy as pathз контекстного меню:

введіть тут опис зображення

Тому рішення, яке я придумав (скопіювавши чужий код), було невеликою програмою C #, яку можна зателефонувати з контекстного меню в Провіднику, і дозволить вам перевести букву диска Mapped на фактичну 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

Тепер ви додаєте параметр контекстного меню в Провіднику так:

Regedit, а потім:

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"

Ви закінчили. Тепер ви побачите цю опцію, натиснувши правою кнопкою миші каталог із зібраного диска:

введіть тут опис зображення

Примітка

Я можу надати виконуваний файл, щоб вам не довелося робити компіляцію самостійно. Просто киньте мені тут записку.


1
Буде приємно, якщо ви застебнули виконуваний файл і помістили у публічний простір, як-от папка Dropbox Public та надали посилання тут. =)
ADTC

3
Багато роботи, я більше віддаю перевагу чистому використанню, як запропонував Джимбо.
Jonas Byström

@ JonasByström Але кінцевий результат настільки приємний, як і для запитання про ОП. Так що «багато роботи» саме те , що отримує цю відповідь на upvote, навіть якщо я не буду використовувати його особисто
sehe

12

Виконайте 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

(Дякую Джимбо, ваша відповідь була хорошою, але не короткою!)


2
Я шкодую, що у мене є лише одна пропозиція. Це дійсно стисло. Дякую.
користувач26398

1
Це ідеальний підхід
Райан Б.

5

Хто - то по імені Шон Кіні надав дозвіл на це в Windows 7 Форум на веб - сайті Microsoft. Це у функції, яка називається Network Place.

  1. Відкрийте Провідник Windows.

  2. Клацніть правою кнопкою миші на запис "Комп'ютер" на лівій панелі та виберіть "Додати мережеве місце". Клацніть далі.

  3. Виберіть параметр "Вибір користувальницької локальної мережі" (це було єдине представлене мені) та натисніть кнопку Далі.

  4. Введіть потрібний шлях UNC та натисніть кнопку Далі двічі. До цього додається запис, який відображається на лівій панелі Провідника Windows під відображеними накопичувачами, але він працює так само, як і відображений накопичений диск, і відображається таким чином у діалоговому вікні Збереження програм.

  5. У Провіднику Windows перейдіть до цього запису до потрібного підкаталогу та натисніть на порожню область праворуч від відображення контуру хлібних крихт у верхній частині екрана Провідника Windows, і з'явиться і виділиться шлях UNC.


1
якщо ви збираєтесь цитувати інше джерело, чи можете ви також надати посилання на це джерело?
DMA57361

Спочатку з цієї публікації - джерело W7 там не вказано: countrykeepers.com/wp/?p=3017
Марк

Гей, спасибі за присвоєння. Я знаю про це, саме це я мав на увазі під «записом просто міг налаштувати відображені локальні мережеві локації замість відображених накопичувачів» - це те, що багато з них приходять до мене, як зібрані накопичувачі люб'язно мої ІТ відділу, і я хотів би мати можливість зв’язати це. Але це, безумовно, можливе рішення якоїсь проблеми!
Ернест Мюллер

PS Я б проголосував за вашу відповідь, але недостатньо респ, так що "віртуальний +1!"
Ернест Мюллер

4
  1. Відкрийте папку.
  2. ВПРАВО, перетягніть файл із папки в Microsoft Word.

3

Утримуючи Shiftта правою кнопкою миші натисніть файл і виберіть "Скопіювати як шлях". Вставте гіперпосилання в електронну пошту та вставте в адресне поле діалогового вікна гіперпосилання.

Після створення гіперпосилання в електронній пошті, ви закінчите.

Посилання покаже відображену букву диска, це правда. Коли одержувач (и) натискає на посилання в електронній пошті, він буде слідувати шляху UNC, незалежно від того, чи користувач відображений чи ні.

Я спробував це в інших програмах Office 2010, Excel, Power Point та Word.


Це працює, але це та сама відповідь, що і відповідь
kmote

2

Ви також можете клацнути правою кнопкою миші ім'я каталогу у вікні каталогу комп'ютера та вибрати перейменувати. Це дасть вам доступ до копіювання шляху.


1
  1. У вікні провідника клацніть правою кнопкою миші відображений диск у дереві файлів зліва.
  2. Виберіть Перейменувати.
  3. Поки текст виділений, клацніть правою кнопкою миші-> копіюйте.
  4. Тепер шлях скопіюється (з додатковим текстом, який легко видаляється після копіювання на нове місце).

1
Зауважте, що справжній шлях не завжди з’являється там, про що свідчить той факт, що ви можете перейменувати його.
Ben N

1

Збережіть це у своїй папці sendto, у мене є C:\Documents and Settings\xxxxID\SendTo таке ім’я, як Copy UNC Filepath.vbs (повинно закінчуватися .vbs) Тепер, коли ви клацніть правою кнопкою миші на папці або файлі, вона скопіює UNC у буфер обміну. Наша особиста папка - це F-привід, тому вона не конвертує ні C: ні F:

'send UNC filepath to clipboard when selected file is input as Send To
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")

myPath=Wscript.Arguments(0)
drive = Left(myPath,2)

if drive = "C:" OR drive = "\\" OR drive = "F:" then
    'leave unchanged
else
    Set oWSN = CreateObject("WScript.Network") 
    Set oDrives = oWSN.EnumNetworkDrives 
    For i = 0 to oDrives.Count - 1 Step 2 
        If oDrives.Item(i) = drive Then 
            sUNC = LCase(oDrives.Item(i+1)) 
            exit For
        end if
    Next 
    myPath=sUNC & Mid(myPath, 3)
end if

objIE.document.parentwindow.clipboardData.SetData "text",myPath
objIE.Quit

Від Ендрю Келлі : @Colkerr, я спробував використати ваше "Копіювати UNC Filepath.vbs", але я отримую помилку компіляції VBScript у рядку 2 символу 54 "Очікуваний кінець заяви"
канадський Люк

Цей код не працює. Я б переглянув натомість superuser.com/a/704374/46099, якщо ви перебуваєте в замиканні корпоративного середовища.
Річард

Щоб знайти відправлення в папку, введіть це у рядок розташування файлу провідника: shell: sendto Сценарій для мене добре працював. Джерело: dummies.com/computers/operating-systems/windows-7 / ...
Девід Lotts

0

У корпоративних мережах більшість відділів інформаційних технологій створюють спільні ресурси, використовуючи простори імен DFS, у межах DFS Shares можна клацнути правою кнопкою миші папку та знайти її ціль.

Іншим методом було б побачити, чи публікується Share в Active Directory. Найпростіший спосіб знайти інші користувачі, не знаючи шлях UNC або ім'я / шлях файлового сервера.

Якщо ви обмінюєтесь документами з великою кількістю користувачів, щось подібне до Microsoft SharePoint може бути кращим рішенням, оскільки пропонує веб-інтерфейс (з WebDAV для доступу до стилю UNC) та пропонує вбудовані інструменти для попередження інших користувачів про документи.

Сподіваюся, що це допомагає.


1
Коли я клацну правою кнопкою миші на своїх папках, я не бачу опції "знайти ціль" - що саме ви маєте на увазі? Я маю на увазі, я бачу справжній шлях, це не таємниця, я просто хочу вміти вирізати і пропустити його, а не вводити. Що стосується Sharepoint, то $ 50 тис. Програмного забезпечення не є моєю ідеальною відповіддю на "але не можу я просто вирізати та вставити шлях ..."
Ернест Мюллер

0

Створіть пакетний файл DOS, showmappeddrives.batякий містить:

@echo off    
net use
pause

Помістіть файл на робочий стіл, якщо хочете.
Двічі клацніть по ньому, і він покаже всі ваші відображені на диску.


Якщо ви додали пояснення, як це використати, то ваша відповідь буде дублікатом відповіді Джимбо від 2½ років тому.
G-Man

0

Клацніть правою кнопкою миші папку> Надіслати> "поділитися з собою (нічого не означає). Ви отримаєте шлях. / Або \.


0

Альтернативне просте рішення:

Якщо ви знімаєте карту як літеру диска, то замість цього знову додайте її як "мережеве місцеположення" (тобто клацніть правою кнопкою миші "Комп'ютер" у вікні провідника та виберіть "Додати мережеве розташування") Введіть повний шлях до папки. . Вперед, він відобразить повний шлях в адресному рядку. Однак програми, які залежать від диска як букви, можуть вийти з ладу.

Переглядаючи відповіді вище, я не думаю, що я побачив просте рішення, над яким я отримав: https://answers.microsoft.com/en-us/windows/forum/windows_7-files/how-can-i-display -the-full-unc-path-of-a-sub / ebfd4253-8016-4cbd-b0d6-1bbeae9189f9


-2

SHIFT + RightClick "Скопіювати як шлях" скопіює ім'я диска + файлу (тобто R: \ test.doc), або якщо ви шукаєте файл через UNCpath, ім'я файлу UNCpath + (тобто "\ nas \ Documents \ test.doc" ")

Це "стандартна" поведінка Windows, і тому мої улюблені, перш за все плагіни Explorer, які сповільнюють системи ....;)


1
Це не допомагає вирішити мою проблему.
Ернест Мюллер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.