81

Я часто хочу поделиться сетевыми путями Windows с файлами с другими людьми в моей команде по электронной почте или в чате. Здесь у нас много подключенных дисков, как самих, так и созданных нашими ИТ-управляющими. То, что я хотел бы сделать, это скопировать полный реальный путь (не букву диска) из проводника Windows для отправки людям.

Пример: у меня на диске "Q:" есть файл \\cartman \users \emueller, и я хочу отправить коллеге ссылку на файл foo.doc в нем. Когда я копирую путь к файлу (shift+ правый клик, "copy as path"), он получает имя файла «Q: \foo.doc» в буфере обмена. Это бесполезно для других, которые должны видеть \\cartman \users \emueller \foo.doc, чтобы иметь возможность использовать ссылку.

В Проводнике он четко знает полный путь - в адресной строке я вижу «Компьютер -> emueller (\\cartman\users) (Q:) ->». Есть ли способ сказать «эй, человек, скопируйте этот путь как текст с \\cartman\users \emueller, а не с Q:»?"

Я знаю, что могу просто настроить сопоставленные сетевые расположения вместо сопоставленных дисков для тех, которые я настроил лично, и избежать этой проблемы, но большинство сопоставленных дисков, таких как "пользователи", основаны на нашей корпоративной ИТ-политике и не могут быть переопределенным. Я мог бы просто создать отдельную сетевую папку, а затем проигнорировать мой диск Q:, но это неудобно (и они делают это, чтобы перемещать учетные записи между серверами). Конечно, мой путь по электронной почте может в конечном итоге сломаться, потому что я теряю косвенность буквы диска, но это нормально для меня.

17 ответов17

47

Может быть, далеко, но откройте окно cmd. Затем выполните 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 из файла для вашего использования.

Надеюсь это поможет.

41

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

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

Пример контекстного меню копирования пути

Вы также можете выбрать отображение только одной или двух строк в базовом контекстном меню, например, у вас может быть две строки: Копировать длинный путь и Копировать длинный путь UNC. Он отлично подходит для отправки электронной почты пользователям вашей компании, у которых есть доступ к сетевому пути, и если у них такое же сетевое сопоставление, как и у вас, вы можете выбрать первое, в противном случае вы можете использовать второе.

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

35

ОБНОВЛЕНИЕ: подход CoolCool даже проще, чем мой. Upvote его ответ.

Вот обходной путь, который я использую при отправке путей к подключенной сети через Outlook:

  1. В проводнике Windows, удерживая нажатой кнопку Shift , щелкните правой кнопкой мыши файл и выберите « Копировать как путь ».
  2. Вставьте гиперссылку в электронное письмо и вставьте в поле адреса диалогового окна «Гиперссылка». (Ярлык: Ctrl-K Ctrl-V + OK). На этом этапе ссылка будет отображать букву подключенного диска в качестве корня (Q:\foo.doc).
  3. Теперь щелкните правой кнопкой мыши и выберите « Изменить гиперссылку ... », и вы заметите, что поле «Адрес» было преобразовано обратно в полный путь UNC (\\cartman\users\emueller\foo.doc). С помощью мыши в поле адреса нажмите Ctrl-A и Ctrl-C, чтобы скопировать полный путь в буфер обмена, затем переместите курсор в верхнее поле («Текст для отображения:»), нажмите Ctrl-A и Ctrl-V, чтобы правильно отобразите его в своем электронном письме.
23

Джефф был в основном на высоте, но чтобы сделать еще один шаг вперед,

  1. ПРАВИЛЬНО перетащите папку из Проводника Windows в тело вашего нового письма,
  2. затем выберите «Создать гиперссылку здесь».
18

Мне просто нужно было то же самое, что спрашивает ОП, и после поиска в Google и прочтения ответов ни один из них не дал того, что, по моему мнению, ищет ОП и я.

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

Как объясняет OP, Explorer отображает фактический путь на панели Explorer, но вы не можете скопировать его (ввод текста утомителен и подвержен ошибкам, так что это не вариант), даже если вы выбрали copy as path из контекстного меню:

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

Вы сделали. Теперь вы увидите эту опцию, если щелкнуть правой кнопкой мыши каталог с подключенного диска:

Заметка

Я могу предоставить исполняемый файл, так что вам не придется делать сборку самостоятельно. Просто напишите мне здесь.
11

Запустите команду 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

(Спасибо, Джимбо, твой ответ был хорошим, но не кратким!)

5

Кто-то по имени Шон Кин предоставил решение этой проблемы на форуме Windows 7 на веб-сайте Microsoft. Это функция, которая называется Network Place.

  1. Откройте проводник Windows.

  2. Щелкните правой кнопкой мыши запись «Компьютер» на левой панели и выберите «Добавить сетевое расположение». Нажмите кнопку "Далее.

  3. Выберите опцию «Выбрать пользовательское сетевое местоположение» (она была единственной, представленной мне) и нажмите «Далее».

  4. Введите требуемый UNC-путь и дважды нажмите «Далее». Это добавляет запись, которая отображается в левой панели Проводника Windows под подключенными дисками, но работает так же, как подключенный диск, и отображается таким образом в диалоговом окне «Сохранить» приложений.

  5. В проводнике Windows перейдите через эту запись к нужному подкаталогу и щелкните в пустой области справа от отображения пути хлебных крошек в верхней части экрана проводника Windows. Путь UNC появится и будет выделен.

4
  1. Откройте папку.
  2. ВПРАВО перетащите файл из папки в Microsoft Word.
3

Удерживая клавишу Shift , щелкните правой кнопкой мыши файл и выберите "Копировать как путь". Вставьте гиперссылку в электронное письмо и вставьте в поле адреса диалогового окна "Гиперссылка".

После того, как вы создали гиперссылку в письме, все готово.

Ссылка покажет букву диска, это правда. Когда получатель (и) нажимает на ссылку в электронном письме, он будет следовать по пути UNC независимо от того, сопоставлен ли пользователь или нет.

Я пробовал это в других приложениях Office 2010, Excel, Power Point и Word.

2

Вы также можете щелкнуть правой кнопкой мыши имя каталога в представлении каталога компьютера и выбрать переименовать. Это даст вам доступ к копированию пути.

1
  1. В окне проводника щелкните правой кнопкой мыши на подключенном диске в дереве файлов слева.
  2. Выберите Переименовать.
  3. Пока текст выделен, щелкните правой кнопкой мыши -> скопировать.
  4. Теперь путь скопирован (с некоторым дополнительным текстом, который легко удаляется после копирования в новое место.
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
0

Щелкните правой кнопкой мыши папку> «Поделиться»> «поделиться с самим собой» (ничего не значит). Вы получите путь. / Или \. Или нажмите «Показать все сети общего доступа».

0

В корпоративных сетях большинство ИТ-отделов создают общие ресурсы с использованием пространств имен DFS. В общих ресурсах DFS вы можете щелкнуть правой кнопкой мыши папку и найти ее цель.

Другим способом будет посмотреть, опубликован ли общий ресурс в Active Directory. Самый простой способ для других пользователей найти общие ресурсы, не зная пути UNC или имени / пути файлового сервера.

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

Надеюсь это поможет.

0

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

Если вы удалите диск как букву диска, а затем добавьте его как "сетевое расположение" (т. Е. Щелкните правой кнопкой мыши "Компьютер" в окне проводника и выберите "Добавить сетевое расположение"). Введите полный путь к папке. , В дальнейшем он отобразит полный путь в адресной строке. Тем не менее, приложения, которые зависят от диска в виде буквы, могут выйти из строя.

Просматривая ответы выше, я не думаю, что видел простое решение выше, которое я получил от: https://answers.microsoft.com/en-us/windows/forum/windows_7-files/how-can-i-display -The-полный путь в формате UNC-оф-а-суб /ebfd4253-8016-4cbd-b0d6-1bbeae9189f9

0

Создайте пакетный файл DOS, например showmappeddrives.bat который содержит:

@echo off    
net use
pause

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

-2

SHIFT + правый клик "Копировать как путь" скопирует диск + имя файла (то есть R:\test.doc), или, если вы просматриваете файл через UNCpath, UNCpath + имя файла (то есть «\nas\Documents\test.doc» «)

Это «стандартное» поведение Windows, и, следовательно, мой любимый, прежде всего, плагин проводника, который замедляет работу систем .... ;)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .