Skopiuj ścieżkę sieciową UNC (nie literę dysku) dla ścieżek na mapowanych dyskach z Eksploratora Windows

87

Często chcę udostępniać ścieżki sieciowe Windows do plików innym osobom w moim zespole przez e-mail lub czat. Mamy tutaj wiele mapowanych dysków, zarówno tych, które sami konfigurujemy, jak i tych, które konfigurują nasi zwierzchnicy IT. Chciałbym móc skopiować pełną prawdziwą ścieżkę (nie literę dysku) z Eksploratora Windows, aby wysłać ją do ludzi.

Przykład: Mam plik na dysku „Q:”, \\ cartman \ users \ emueller, i chcę wysłać link do pliku foo.doc w nim współpracownikom. Kiedy kopiuję ścieżkę do pliku (Shift + kliknięcie prawym przyciskiem myszy, „Kopiuj jako ścieżkę”), dostaje nazwę schowka „Q: \ foo.doc” do schowka. Nie jest to pomocne dla innych, którzy musieliby zobaczyć \\ cartman \ users \ emueller \ foo.doc, aby móc skorzystać z łącza.

W Eksploratorze wyraźnie zna pełną ścieżkę - w pasku adresu widzę „Komputer -> emueller (\\ cartman \ users) (Q :) ->”). Czy istnieje sposób, aby powiedzieć „hej, człowieku, skopiuj tę ścieżkę jako tekst z \\ cartman \ users \ emueller, a nie Q: w nim?”

Wiem, że mogłem po prostu skonfigurować mapowane lokalizacje sieciowe zamiast mapowanych dysków dla tych, które skonfigurowałem osobiście i uniknąć tego problemu, ale większość mapowanych dysków, takich jak udział „użytkowników”, pochodzi z naszej korporacyjnej polityki IT i nie może zostać nadpisanym. Mógłbym po prostu utworzyć osobną lokalizację sieciową, a następnie zignorować mój dysk Q:, ale jest to niewygodne (i robią to, aby móc przenosić konta między serwerami). Pewnie moja ścieżka wysłana pocztą e-mail może w końcu się zepsuć, ponieważ tracę pośrednią literę dysku, ale nie mam nic przeciwko.

Ernest Mueller
źródło
1
Jeśli pracujesz w zamkniętym środowisku korporacyjnym, w którym nie możesz zainstalować żadnych aplikacji innych firm i / lub uzyskać dostępu do rejestru, to rozwiązanie będzie działać ... superuser.com/a/704374/46099
Richard

Odpowiedzi:

46

Miałem dokładnie ten sam problem - nie wszyscy mieli te same zmapowane dyski jak ja lub zmapowane na te same litery.

Po wielu poszukiwaniach znalazłem rozszerzenie menu kontekstowego o nazwie Path Copy Copy na GitHub ( https://pathcopycopy.github.io/ ), które jest rozszerzoną wersją podobnego, starszego rozszerzenia (o nazwie Pathcopy), ma sporo opcji kopiowania ścieżek jako tekst, w tym jeden dla ścieżek UNC - przykład dostępnych opcji pokazano poniżej:

Przykład menu kontekstowego ścieżki kopiowania

Możesz także wybrać wyświetlanie tylko jednej lub dwóch linii w podstawowym menu kontekstowym, na przykład możesz mieć dwie linie, Kopiuj długą ścieżkę i Kopiuj długą ścieżkę UNC. Doskonale nadaje się do wysyłania wiadomości e-mail do użytkowników w Twojej firmie, którzy mają dostęp do ścieżki sieciowej, a jeśli mają takie samo mapowanie sieci jak Ty, możesz wybrać to pierwsze, w przeciwnym razie możesz użyć drugiego.

Aktualizacja : Od wersji 12.0 w powyższej witrynie dostępny jest nowy „przenośny” instalator, który instaluje się tylko dla bieżącego użytkownika w AppData\Localfolderze. Nie próbowałem tego, ale może to być rozwiązanie dla tych, którym nie wolno normalnie instalować.

i_saw_drones
źródło
4
Trochę niechlujny, zdecydowanie wolę korzystanie z sieci, jak sugeruje Jimbo.
Jonas Byström
49

Może daleko, ale otwórz okno cmd. Więc zróbnet use > filename

Następnie otwórz nazwę pliku i możesz uzyskać ścieżkę:
np .:

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

Otwarcie drives.txt

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

Można skopiować \\server\c\prog\netz pliku do użytku.

Mam nadzieję że to pomoże.

Jimbo
źródło
10
proste i łatwe. Wszystkie inne rozwiązania w tym temacie są bardzo masowe ...
radistao
8
Lub po prostu pomiń „> napędy.txt” i skopiuj wygenerowaną ścieżkę bezpośrednio z okna terminala.
DarenW
1
Prosty i łatwy. Zdobyć.
CAD bloke
Dzięki msysgit / bash na wyciągnięcie ręki jest to o wiele łatwiejsze niż inne rozwiązania. Wielki!
Jonas Byström
1
net use > filename pomyliłem mnie ... i użyłem mojej aktualnej nazwy pliku pdf w tym miejscu, dlatego spakowałem mój oryginalny plik pdf. tak, wiem, że to moje złe. więc uważaj. po prostu użyj net usei skopiuj z okna terminala. a jeśli potrzebujesz go naprawdę w pliku ... to wiesz, co robić .. `> uncpathnamefile.txt '
ihightower
38

AKTUALIZACJA: Podejście CoolCol jest jeszcze łatwiejsze niż moje. Poproś o odpowiedź.

Oto obejście, którego używam podczas wysyłania ścieżek mapowanych sieci za pośrednictwem programu Outlook:

  1. W Eksploratorze Windows przytrzymaj shiftprzycisk, kliknij plik i kliknij „ Kopiuj jako ścieżkę ”.
  2. Wstaw hiperłącze do wiadomości e-mail i wklej w polu adresu w oknie dialogowym Hiperłącze. (Skrót: ctrl-K ctrl-V+ OK). W tym momencie łącze wyświetli zmapowaną literę dysku jako root ( Q:\foo.doc).
  3. Teraz kliknij i kliknij „ Edytuj hiperłącze ... ”, zauważysz, że pole Adres zostało przetłumaczone z powrotem na pełną ścieżkę UNC ( \\cartman\users\emueller\foo.doc). Za pomocą myszy w polu Adres naciśnij ctrl-Ai, ctrl-Caby skopiować pełną ścieżkę do schowka, a następnie przesuń kursor do górnego trafienia („Tekst do wyświetlenia:”) ctrl-Ai ctrl-Vwyświetl go poprawnie w wiadomości e-mail.
kmote
źródło
Nie widzę opisywanych rzeczy.
DarenW
której części nie widzisz? Czy możesz utworzyć hiperłącze? Czy wiesz jak edytować link?
kmote
3
W kroku 3., jeśli wpiszesz znak i go usuniesz, zaktualizuje on „Tekst do wyświetlenia”, co jest łatwiejsze niż kopiowanie / wklejanie.
79E09796
Nie trzeba wpisywać znaku w „Tekst do wyświetlenia”, a następnie go usunąć, wystarczy go usunąć.
Bae
1
Zobacz odpowiedź Coolcol superuser.com/a/922152/190599, aby przyspieszyć kopiowanie, klikając prawym przyciskiem myszy opcję „Utwórz skrót tutaj”.
Bae
29

Geoff był w zasadzie na miejscu, ale aby pójść o krok dalej,

  1. PRAWO PRZECIĄGNIJ folder z Eksploratora Windows, w treści nowego e-maila,
  2. następnie wybierz „Utwórz hiperłącze tutaj” .
Coolcol
źródło
1
najszybszy i najbardziej wyrafinowany
Alex
3
Powinna być najlepsza odpowiedź, ponieważ problem pojawia się głównie w środowisku korporacyjnym i nie możesz sam zainstalować oprogramowania.
berezovskyi
To musi zostać połączone z odpowiedzią kmote superuser.com/a/454119/190599, ponieważ oba są bardzo szybkie
Bae
19

Właśnie potrzebowałem tego samego, o co OP pyta, a po wyszukaniu w Google i przeczytaniu odpowiedzi, żadne z nich nie podało tego, co myślę, że OP i ja szukam.

Problem polega na tym, że można zmapować udział sieciowy, Drive Ypodczas gdy ktoś inny w organizacji może mieć przypisany taki sam udział sieciowy jak Drive X; dlatego przesłanie takiego linku Y:\mydirectorymoże nie działać dla nikogo oprócz mnie.

Jak wyjaśnia OP, Explorer pokazuje rzeczywistą ścieżkę na pasku Eksploratora, ale nie można jej skopiować (pisanie jest uciążliwe i podatne na błędy, więc nie jest to opcja), nawet jeśli wybierzesz copy as pathz menu kontekstowego:

wprowadź opis zdjęcia tutaj

Tak więc rozwiązaniem, które wymyśliłem (przez skopiowanie kodu innej osoby) był mały program w języku C #, który można wywołać z menu kontekstowego w Eksploratorze i który pozwoli ci przetłumaczyć literę zamapowanego dysku na rzeczywistą UNC path.

Oto kod:

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()));           
            }
        }
    }
}

A oto Pathingdefinicja klasy (postaram się znaleźć rzeczywiste źródło, ponieważ nie pamiętam, gdzie je znalazłem):

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;
    }
}

Budujesz program i umieszczasz plik wykonywalny gdzieś na komputerze, powiedzmy na przykład c:\Utils

Teraz dodajesz opcję menu kontekstowego w Eksploratorze, ponieważ:

Regedit, a następnie:

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"

Gotowe. Teraz zobaczysz tę opcję po kliknięciu prawym przyciskiem myszy katalog z zamapowanego dysku:

wprowadź opis zdjęcia tutaj

Uwaga

Mogę dostarczyć plik wykonywalny, abyś nie musiał sam kompilować. Po prostu napisz mi tutaj notatkę.

Ikar
źródło
1
Będzie miło, jeśli spakujesz plik wykonywalny i umieścisz w przestrzeni publicznej, takiej jak folder publiczny Dropbox i podasz tutaj link. =)
ADTC
3
Dużo pracy, wolę wykorzystanie sieci, jak sugeruje Jimbo.
Jonas Byström
@ JonasByström Ale wynik końcowy jest tak miły, jak to tylko możliwe w przypadku pytania PO. Tak więc „dużo pracy” jest właśnie tym, co zarabia na tym głosowaniu, nawet jeśli nie użyję go osobiście
patrz
12

Uruchom cmd.exepolecenie 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

(Dzięki Jimbo, twoja odpowiedź była dobra, ale nie krótka!)

Jonas Byström
źródło
2
Żałuję, że mam tylko jeden głos do wyrażenia opinii. To jest rzeczywiście zwięzłe. Dzięki.
user26398
1
To idealne podejście
Ryan B.
5

Ktoś o imieniu Shawn Keene podał rozwiązanie tego problemu na forum Windows 7 na stronie Microsoft. Jest w funkcji o nazwie Network Place.

  1. Otwórz Eksploratora Windows.

  2. Kliknij prawym przyciskiem myszy pozycję Komputer w lewym okienku i wybierz „Dodaj lokalizację sieciową”. Kliknij Następny.

  3. Wybierz opcję „Wybierz niestandardową lokalizację sieciową” (była to jedyna mi przedstawiona) i kliknij Dalej.

  4. Wpisz żądaną ścieżkę UNC i kliknij dwa razy przycisk Dalej. Dodaje to pozycję, która pojawia się w lewym okienku Eksploratora Windows pod mapowanymi dyskami, ale działa tak jak mapowany dysk i pojawia się w ten sposób w oknie dialogowym Zapisz aplikacji.

  5. W Eksploratorze Windows przejdź przez ten wpis do żądanego podkatalogu i kliknij pusty obszar po prawej stronie wyświetlanej ścieżki okruchów chleba u góry ekranu Eksploratora Windows, a ścieżka UNC pojawi się i zostanie podświetlona.

znak
źródło
1
jeśli zamierzasz zacytować inne źródło, czy możesz również link do tego źródła?
DMA57361
Pochodzący z tego postu - źródło W7 nie specifed tam: countrykeepers.com/wp/?p=3017
Mark
Hej, dzięki za włożenie. Wiem o tym, miałem na myśli to, że „mogłem po prostu ustawić mapowane lokalizacje sieciowe zamiast mapowanych dysków” w pytaniu - to dlatego, że wiele z nich przychodzi do mnie jako mapowane dyski dzięki uprzejmości mojego IT departament i chciałbym móc je połączyć. Ale to zdecydowanie możliwe rozwiązanie niektórych problemów!
Ernest Mueller
PS Głosowałbym na twoją odpowiedź, ale za mało przedstawicieli, więc „wirtualna +1!”
Ernest Mueller
4
  1. Otwórz folder.
  2. PRAWO przeciągnij plik z folderu do Microsoft Word.
Geoff
źródło
3

Przytrzymaj Shifti kliknij plik prawym przyciskiem myszy i wybierz „Kopiuj jako ścieżkę”. Wstaw hiperłącze do wiadomości e-mail i wklej w polu adresu w oknie dialogowym Hiperłącze.

Po utworzeniu hiperłącza w wiadomości e-mail gotowe.

Link pokaże zmapowaną literę dysku, to prawda. Gdy odbiorca kliknie link w wiadomości e-mail, podąży ścieżką UNC, niezależnie od tego, czy użytkownik jest zmapowany, czy nie.

Próbowałem tego w innych aplikacjach pakietu Office 2010, Excel, Power Point i Word.

keNscale
źródło
To działa, ale jest to ta sama odpowiedź, co odpowiedź
kmote
2

Możesz także kliknąć prawym przyciskiem myszy nazwę katalogu w widoku katalogu komputera i wybrać zmienić nazwę. To da ci dostęp do skopiowania ścieżki.

Craig
źródło
1
  1. W oknie eksploratora kliknij prawym przyciskiem myszy zmapowany dysk w drzewie plików po lewej stronie.
  2. Wybierz Zmień nazwę.
  3. Gdy tekst jest podświetlony, kliknij prawym przyciskiem myszy-> skopiuj.
  4. Teraz ścieżka jest kopiowana (z dodatkowym tekstem, który można łatwo usunąć po skopiowaniu do nowej lokalizacji.
ThomB
źródło
1
Pamiętaj, że prawdziwa ścieżka nie zawsze tam pojawia się, o czym świadczy fakt, że możesz ją zmienić.
Ben N
1

Zapisz to w folderze sendto, mój jest pod C:\Documents and Settings\xxxxID\SendTo nazwą Copy UNC Filepath.vbs (musi kończyć .vbs) Teraz, kiedy klikniesz prawym przyciskiem myszy folder lub plik, skopiuje UNC do schowka. Nasz folder osobisty to dysk F, więc nie konwertuje ani C: ani 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
źródło
Od Andrew Kelly : @Colkerr, próbowałem użyć twojego „Kopiuj plik UNC Filepath.vbs”, ale dostaję błąd kompilacji VBScript w znaku 2 w linii 54 „Oczekiwany koniec instrukcji”
Kanadyjczyk Łukasz
Ten kod nie działa. Zamiast tego spojrzałbym na superuser.com/a/704374/46099, jeśli jesteś w zamkniętym środowisku korporacyjnym.
Richard
Aby znaleźć plik send to folder, wpisz go w pasku lokalizacji eksploratora plików: shell: sendto Skrypt działał dla mnie dobrze. źródło: dummies.com/computers/operating-systems/windows-7/…
David
0

W sieciach korporacyjnych większość działów IT tworzy udziały za pomocą przestrzeni nazw DFS, w ramach udziałów DFS można kliknąć folder prawym przyciskiem myszy i znaleźć jego cel.

Inną metodą byłoby sprawdzenie, czy udział jest opublikowany w usłudze Active Directory. Najłatwiejszy sposób dla innych użytkowników na znalezienie udziałów bez znajomości ścieżki UNC lub nazwy / ścieżki serwera plików.

Jeśli udostępniasz dokumenty dużej liczbie użytkowników, coś takiego jak Microsoft SharePoint może być lepszym rozwiązaniem, ponieważ oferuje interfejs internetowy (z WebDAV dla dostępu w stylu UNC) i oferuje wbudowane narzędzia ostrzegające innych użytkowników o dokumentach.

Mam nadzieję że to pomoże.

dmd83
źródło
1
Po kliknięciu prawym przyciskiem myszy folderów nie widzę opcji „znajdź cel” - co dokładnie masz na myśli? Mam na myśli, widzę prawdziwą ścieżkę, to nie jest tajemnica, chcę tylko móc ją przecinać, ominąć i nie pisać. Jeśli chodzi o Sharepoint, oprogramowanie w wysokości 50 000 USD nie jest moją idealną odpowiedzią na „ale nie mogę po prostu wyciąć i wkleić ścieżki ...”
Ernest Mueller
0

Utwórz plik wsadowy DOS, showmappeddrives.batktóry zawiera:

@echo off    
net use
pause

Umieść plik na pulpicie, jeśli chcesz.
Kliknij dwukrotnie, aby wyświetlić wszystkie zmapowane dyski.

Księciem
źródło
Jeśli dodałeś wyjaśnienie, jak z tego korzystać, twoja odpowiedź byłaby duplikatem odpowiedzi Jimbo sprzed 2,5 roku.
G-Man,
0

Kliknij folder prawym przyciskiem myszy> Udostępnij> „udostępnij sobie (nic nie znaczy). Otrzymasz ścieżkę. / Lub \. Lub kliknij pokaż całą sieć udostępnioną.

aabbcc
źródło
0

Alternatywne proste rozwiązanie:

Jeśli odmapujesz dysk jako literę dysku, a następnie dodaj go ponownie jako „lokalizację sieciową” (tj. Kliknij prawym przyciskiem myszy „Komputer” w oknie Eksploratora i wybierz „Dodaj lokalizację sieciową”). Wpisz pełną ścieżkę do folderu . Idąc dalej, wyświetli pełną ścieżkę w pasku adresu. Aplikacje zależne od dysku jako litery mogą jednak zawieść.

Patrząc na powyższe odpowiedzi, nie sądzę, że widziałem proste rozwiązanie, które uzyskałem od: https://answers.microsoft.com/en-us/windows/forum/windows_7-files/how-can-i-display -tak-pełna-nieokreślona-ścieżka-sub / ebfd4253-8016-4cbd-b0d6-1bbeae9189f9

Aiju
źródło
-2

SHIFT + RightClick „Kopiuj jako ścieżkę” skopiuje dysk + nazwę pliku (tj. R: \ test.doc) lub, jeśli przeglądasz plik przez UNCpath, nazwę pliku UNCpath + (tj. „\ Nas \ Documents \ test.doc” „)

Jest to „standardowe” zachowanie systemu Windows, a zatem moje ulubione, przede wszystkim wtyczki Explorer, które spowalniają systemy ....;)

Luuk
źródło
1
To nie pomaga rozwiązać mojego problemu.
Ernest Mueller