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

274643
Ernest Mueller

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

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

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

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

77
Если вы работаете в закрытой корпоративной среде, где вы не можете установить какие-либо сторонние приложения и / или получить доступ к реестру, то это решение будет работать ... http://superuser.com/a/704374/46099 Richard 10 лет назад 0

17 ответов на вопрос

47
Jimbo

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

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

просто и легко. Все остальные решения в теме очень объемные ... radistao 10 лет назад 9
Или просто пропустите "> drives.txt" и скопируйте путь вывода прямо из окна терминала. DarenW 10 лет назад 8
Просто и легко. Выиграть. CAD bloke 10 лет назад 1
С msysgit / bash у вас под рукой это намного проще, чем другие решения. Большой! Jonas Byström 10 лет назад 0
41
i_saw_drones

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

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

Path Copy Context Menu example

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

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

Немного грязно, я предпочитаю [net use] (http://superuser.com/questions/244579/copy-unc-network-path-not-drive-letter-for-paths-on-mapped-drives-from- windows / 660654 # 660654) в соответствии с предложением Джимбо. Jonas Byström 10 лет назад 3
35
kmote

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

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

  1. В проводнике Windows, удерживая shiftкнопку, r-щелкните файл и выберите « Копировать как путь ».
  2. Вставьте гиперссылку в электронное письмо и вставьте в поле адреса диалогового окна «Гиперссылка». (Ярлык: ctrl-K ctrl-V+ ОК). На данный момент, ссылка будет отображаться переведенной буква диска в качестве корня ( Q:\foo.doc).
  3. Теперь, r-click и выберите « Edit Hyperlink ... », вы заметите, что поле Address было переведено обратно в полный путь UNC ( \\cartman\users\emueller\foo.doc). Наведите указатель мыши на поле «Адрес», нажмите ctrl-Aи, ctrl-Cчтобы скопировать полный путь к буферу обмена, затем наведите курсор на верхнее поле («Текст для отображения:») ctrl-Aи ctrl-Vотобразите его правильно в своем электронном письме.
Я не вижу описанных вещей. DarenW 10 лет назад 0
какую часть ты не видишь? Можете ли вы создать гиперссылку? Вы знаете, как редактировать ссылку? kmote 10 лет назад 0
На шаге 3. Если вы введете символ и удалите его, он обновит «Текст для отображения», что проще, чем копировать / вставить. 79E09796 9 лет назад 3
Вам не нужно вводить символ в «Текст для отображения», а затем удалить его, просто удалите его. Bae 8 лет назад 0
См. Ответ Coolcol http://superuser.com/a/922152/190599, чтобы ускорить копирование, щелкнув правой кнопкой мыши параметр «Создать ярлык здесь». Bae 8 лет назад 1
Отличный совет, @Bae! Я обновил свой ответ, чтобы указать на CoolCool. kmote 5 лет назад 0
23
Coolcol

Geoff was basically spot on, but to take it one step further,

  1. RIGHT-DRAG the folder from Windows Explorer, into the body of your new email,
  2. then select 'Create Hyperlink Here'.
самый быстрый и самый лучший из коробки Alex 8 лет назад 1
Должен быть лучшим ответом, так как проблема возникает в основном в корпоративной среде, и вы не можете установить программное обеспечение там самостоятельно. berezovskyi 8 лет назад 3
Это должно быть объединено с ответом kmote http://superuser.com/a/454119/190599, так как они вместе очень быстрые Bae 8 лет назад 0
17
Icarus

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

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

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

enter image description here

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

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

enter image description here

Заметка

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

Будет хорошо, если вы заархивировали исполняемый файл и поместили в публичное пространство, например в папку Dropbox _Public_, и указали здесь ссылку. знак равно ADTC 10 лет назад 1
Много работы, я предпочитаю [net use] (http://superuser.com/questions/244579/copy-unc-network-path-not-drive-letter-for-paths-on-mapped-drives-from -windows / 660654 # 660654) в соответствии с предложением Джимбо. Jonas Byström 10 лет назад 3
@ JonasByström Но конечный результат так же хорош, как и вопрос ОП. Так что «много работы» - именно то, что заслужило этот ответ, даже если я не буду использовать его лично sehe 8 лет назад 0
@sehe Если это «именно так», его бы еще больше поддержали, если бы он добавил больше шагов, возможно, с использованием антивируса Norton и использованием молотка для набора текста на клавиатуре. Наверное. Некоторые люди голосовали за [Сару Пэйлин] (https://en.wikipedia.org/wiki/Sarah_Palin). И что? Слабоумные делают то, что делают, но не оправдывают это. «Конструктивная критика», я полагаю, называется выше. Jonas Byström 8 лет назад 0
11
Jonas Byström

Run the cmd.exe command 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 

(Thanks Jimbo, your answer was good but not brief!)

Я сожалею, что у меня есть только одно возражение, чтобы дать. Это действительно лаконично. Благодарю. user26398 8 лет назад 2
Это идеальный подход Ryan B. 7 лет назад 1
5
Mark

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

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

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

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

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

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

если вы собираетесь процитировать другой источник, не могли бы вы также дать ссылку на этот источник? DMA57361 13 лет назад 1
Первоначально из этого поста - источник W7 не был указан там: http://www.countrykeepers.com/wp/?p=3017 Mark 13 лет назад 0
Привет, спасибо, что включили. Я знаю об этом, вот что я имел в виду под «я мог просто настроить сопоставленные сетевые расположения вместо сопоставленных дисков» в вопросе - это то, что многие из них приходят ко мне как сопоставленные диски, любезно предоставленные моим ИТ-отделом. отдел, и я хотел бы иметь возможность связать их. Но это определенно возможное решение некоторых проблем! Ernest Mueller 13 лет назад 0
PS Я бы проголосовал за ваш ответ, но не достаточно респ, так что "виртуальный +1!" Ernest Mueller 13 лет назад 0
4
Geoff
  1. Откройте папку.
  2. ВПРАВО перетащите файл из папки в Microsoft Word.
3
keNscale

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

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

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

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

Это работает, но это тот же ответ, что и ответ [kmote] (https://superuser.com/a/454119/206587) davidmneedham 6 лет назад 0
2
Craig

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