2011-02-11 15:29:57 +0000 2011-02-11 15:29:57 +0000
89
89
Advertisement

Скопируйте сетевой путь UNC (не буква диска) для путей на отображенных дисках из Проводника Windows

Advertisement

Я часто хочу поделиться сетевыми путями Windows с другими людьми в моей команде через электронную почту или чат. У нас тут много отображенных дисков, как настроенных нами самими, так и настроенных нашими IT оверлордами. Я бы хотел иметь возможность скопировать полный реальный путь (а не букву диска) из проводника Windows для отправки людям.

Пример: У меня есть файл на диске “Q:” \cartman\users\emueller, и я хочу отправить коллегам ссылку на файл foo.doc в нем. Когда я копирую путь к файлу (сдвиг+щелчок правой кнопкой мыши, “копировать как путь”), он получает имя файла “Q:\foo.doc” в буфере обмена. Это бесполезно для других, которым нужно было бы увидеть \cartman\users\emueller\foo.doc, чтобы иметь возможность использовать ссылку.

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

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

Advertisement

Ответы (17)

49
49
49
2012-04-19 17:19:19 +0000

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

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

47
47
47
2012-08-24 23:20:11 +0000

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

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

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

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

39
Advertisement
39
39
2012-07-26 21:41:45 +0000

UPDATE: CoolCol’s approach даже легче, чем мой. Извините этот ответ.

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

  1. В Проводнике Windows удерживайте кнопку shift, r нажмите на файле и выберите “ Copy as path”.
  2. 2. Вставьте Гиперссылку в электронную почту и вставьте в адресное поле диалогового окна “Гиперссылка”. (Сокращенный вариант: ctrl-K ctrl-V + OK). В этот момент ссылка отобразит букву диска mapped в виде корня (Q:\foo.doc).
  3. Теперь, r-click и выберите “ Edit Hyperlink…”, вы заметите, что поле Address было преобразовано обратно в полный путь UNC (\cartman\users\emueller\foo.doc). Нажав мышью в поле Address, нажмите ctrl-A и ctrl-C, чтобы скопировать полный путь в буфер обмена, затем переместите курсор в верхнее поле (“Текст для отображения:”), нажмите ctrl-A и ctrl-V, чтобы отобразить его корректно в вашей электронной почте.
32
32
32
2015-06-01 08:49:58 +0000

(https://superuser.com/a/839640/27017) был в основном на месте, но чтобы продвинуться на шаг дальше,

  1. ПРАВИЛЬНО перетащите папку из проводника Windows в тело нового письма,
  2. затем выберите ‘Create Hyperlink Here’ (Создать гиперссылку).
20
Advertisement
20
20
2012-08-24 20:23:12 +0000

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

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

Как объясняет ОП, Проводник показывает реальный путь в строке Проводника, но вы не можете его скопировать (вводить скучно и склонно к ошибкам, так что это не вариант), даже если вы выберете 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:008-02-29"
    /// might return: "\networkserver\Shares\Photos008-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"

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

Примечание

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

12
12
12
2013-10-16 12:16:39 +0000

Запустите команду cmd.exe:

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
Advertisement
5
5
2011-02-17 12:04:02 +0000

Кто-то по имени Шон Кин предоставил решение для этого в Windows 7 Forum на сайте Microsoft. Оно находится в функции под названием Network Place.

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

  2. Щелкните правой кнопкой мыши на записи Компьютер в левой панели и выберите “Добавить сетевое место”. Щелкните дальше.

  3. Выберите опцию “Выбрать пользовательское сетевое расположение” (она была единственной представленной мне) и щелкните Next.

  4. Введите желаемый путь UNC и дважды нажмите кнопку Next (Далее). Это добавляет запись, которая отображается в левой панели проводника Windows под отображаемыми дисками, но работает так же, как и отображаемый диск, и отображается таким образом в диалоге сохранения приложений.

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

4
4
4
2014-11-13 15:35:34 +0000
  1. Откройте папку.
  2. Перетащите файл из папки в Microsoft Word.
3
Advertisement
3
3
2013-10-02 19:04:28 +0000

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

После создания гиперссылки в электронном письме все готово.

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

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

2
2
2
2012-09-28 13:42:54 +0000

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

1
Advertisement
1
1
2013-10-16 13:33:07 +0000

Сохраните это в вашей папке 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
```.
1
1
1
2016-02-03 19:51:46 +0000
  1. В окне проводника щелкните правой кнопкой мыши по отображаемому диску в дереве файлов слева.
  2. Выберите Переименовать.
  3. Пока выделяется Текст, нажмите right_click->copy.
  4. Теперь путь копируется (с некоторым дополнительным текстом, который легко удаляется после копирования в новое место.
0
Advertisement
0
0
2014-10-09 22:20:56 +0000

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

@echo off    
net use
pause

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

0
0
0
2018-04-20 18:34:56 +0000

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

Если вы распаковываете диск как букву диска, то вместо этого впишите его как “сетевое расположение” (т.е. щелкните правой кнопкой мыши “Computer” (Компьютер) в окне проводника и выберите “Add a network location” (Добавить сетевое расположение)). Продвигаясь вперед, он отобразит полный путь в адресной строке. Однако приложения, зависящие от диска как от буквы, могут выйти из строя.

Просматривая приведенные выше ответы, мне кажется, я не видел простого решения, которое я получил от: _COPY2_7-files/how-can-i-display-the-full-unc-path-of-a-sub/ebfd4253-8016-4cbd-b0d6-1bbeae9189f9 .

0
Advertisement
0
0
2011-02-12 22:06:12 +0000

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

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

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

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

0
0
0
2016-11-24 06:37:36 +0000

Щелкните правой кнопкой мыши на папку > Share > “ share to yourself (ничего не значит) . вы получите путь. / или \ . или нажмите показать все сетевые общие.

-2
Advertisement
-2
-2
2015-02-21 09:33:45 +0000

SHIFT + щелчок правой кнопкой мыши “Copy as path” скопирует диск+имя файла (т.е. R:\test.doc), или если вы смотрите на файл через UNCpath+имя файла (т.е. “\nas\Documents\test.doc”)

Это “стандартное” поведение Windows, и поэтому мои любимые, прежде всего, плагины проводника, которые замедляют работу систем… ;).

Похожие вопросы

3
28
13
7
12
Advertisement