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

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

Często chcę udostępnić ścieżki sieciowe Windows do plików innym osobom w moim zespole za pośrednictwem poczty elektronicznej lub czatu. Mamy tu wiele zmapowanych dysków, zarówno tych, które sami ustawiamy, jak i tych, które są ustawiane przez naszych informatyków. Chciałbym móc skopiować pełną rzeczywistą ścieżkę (a nie literę dysku) z Eksploratora Windows, aby wysłać ją do ludzi.

Przykład: Mam plik na moim dysku “Q:”, \Cartman\ueller, i chcę wysłać link do pliku foo.doc tam do współpracowników. Kiedy kopiuję ścieżkę pliku (shift+right click, “copy as path”), otrzymuje on nazwę pliku “Q:\foo.doc” w schowku. Jest to nieprzydatne dla innych, którzy musieliby zobaczyć użytkowników cartmana, aby móc skopiować link.

W Explorerze zna pełną ścieżkę - w pasku adresu widzę “Computer -> emueller (\u00261_cartman\users) (Q:) ->”. Czy istnieje sposób, aby powiedzieć “hej, człowieku, skopiuj tę ścieżkę jako tekst z użytkownikami cartmana, a nie Q: w nim?”

Wiem, że mógłbym po prostu skonfigurować zmapowane lokalizacje sieciowe zamiast zmapowanych dysków dla tych, które skonfigurowałem osobiście i uniknąć tego problemu, ale większość zmapowanych dysków, takich jak udział “użytkowników”, pochodzi z naszej korporacyjnej polityki IT i nie może być zastąpiona. Mógłbym po prostu stworzyć osobną lokalizację sieciową, a następnie zignorować mój dysk Q:, ale jest to niewygodne (i robią to, aby móc przenosić konta pomiędzy serwerami). Na pewno moja ścieżka mailowa może w końcu się złamać, ponieważ tracę obojętność na literę dysku, ale to jest w porządku.

Odpowiedzi (17)

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

Może długa droga, ale otwórz okno w cmd. Then do net use > filename

Then open the file name and you can get the path: Ex:

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

Open drives.txt

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

Can copy \server\c\prog\net from the file for your use.

Hope this helps.

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

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

Po wielu poszukiwaniach znalazłem rozszerzenie menu kontekstowego o nazwie Path Copy Copy Copy na GitHubie https://pathcopycopy.github.io/ ), które jest rozszerzoną wersją podobnego, starszego rozszerzenia (zwanego Pathcopy) posiada sporo opcji kopiowania ścieżek jako tekstu, w tym jedną dla ścieżek UNC - przykłady dostępnych opcji są pokazane poniżej:

Możesz również wybrać opcję wyświetlania tylko jednej lub dwóch linii w menu kontekstowym, np. możesz mieć dwie linie, Kopiuj długą ścieżkę, oraz Kopiuj długą ścieżkę UNC. Jest to świetne rozwiązanie dla użytkowników poczty elektronicznej 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ć pierwszą, w przeciwnym razie możesz użyć drugiej.

Uaktualnij : Od wersji 12.0 na powyższej stronie dostępny jest nowy “przenośny” instalator, który instaluje się tylko dla obecnego użytkownika w folderze AppData\Local. Nie próbowałem tego, ale może to być rozwiązanie dla tych, którzy mają zakaz normalnej instalacji.

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

UPDATE: CoolCol’s approach jest nawet łatwiejsze niż moje. Zagłosuj na tę odpowiedź.

Oto obejście, którego używam przy wysyłaniu mapowanych ścieżek sieciowych przez Outlooka:

  1. W Eksploratorze Windows, przytrzymaj przycisk Shift, r kliknij na pliku i wybierz “ Kopiuj jako ścieżkę”.
  2. Wstawić hiperłącze do wiadomości e-mail i wkleić w polu adresu okna dialogowego Hiperłącze. (Skrót: ctrl-K ctrl-V + OK). W tym momencie link wyświetli literę mapped napędu jako root (Q:\foo.doc).
  3. Teraz, r-click i wybierz “ Edit Hyperlink…” zauważysz, że pole Adres zostało przetłumaczone z powrotem na pełną ścieżkę UNC (\cartman\users\emueller\foo.doc). Myszą w polu Adres kliknij na ctrl-A i ctrl-C, aby skopiować pełną ścieżkę do schowka, a następnie przesuń kursor na górne pole (“Text to Display:”), kliknij na ctrl-A i ctrl-V, aby wyświetlić ją poprawnie w mailu.
32
32
32
2015-06-01 08:49:58 +0000

Geoff był w zasadzie na miejscu, ale aby zrobić krok dalej,

  1. PRAWO-Ściągnij folder z Eksploratora Windows, do treści Twojego nowego maila,
  2. następnie wybierz ‘Utwórz hiperłącze tutaj’.
20
20
20
2012-08-24 20:23:12 +0000

Właśnie miałem potrzebę tej samej rzeczy OP pyta i po wyszukaniu w Google i przeczytaniu odpowiedzi, żaden z nich nie podał tego, co myślę, że OP i ja szukamy.

Problemem jest to, że można mapować udział sieciowy do Drive Y, podczas gdy ktoś inny w organizacji może mieć ten sam udział sieciowy zmapowany jako Drive X; dlatego wysłanie linku takiego jak Y:\mydirectory nie może działać dla nikogo innego, oprócz mnie.

Jak wyjaśnia OP, Explorer pokazuje rzeczywistą ścieżkę w pasku eksploratora, ale nie można jej skopiować (pisanie jest żmudne i podatne na błędy, więc nie jest to opcja) nawet jeśli wybierzemy copy as path z menu kontekstowego:

Tak więc rozwiązanie, które wymyśliłem (poprzez skopiowanie czyjegoś kodu) to mały program C#, który można wywołać z menu kontekstowego w eksploratorze i pozwoli na przetłumaczenie zmapowanej litery dysku na rzeczywisty 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 definicja klasy Pathing (postaram się znaleźć faktyczne ź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: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;
    }
}

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

Teraz dodajesz opcję menu kontekstowego w Explorerze, tak jak:

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"

Jesteś skończony. Teraz zobaczysz tę opcję, gdy klikniesz prawym przyciskiem myszy katalog z mapowanego dysku:

Uwaga

I can provide the executable so you don’t have to do the compilation yourself. Po prostu upuść mi notatkę tutaj.

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

Uruchom komendę 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

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

5
5
5
2011-02-17 12:04:02 +0000

Ktoś o nazwisku Shawn Keene dostarczył rozwiązanie do tego na forum Windows 7 na stronie internetowej firmy Microsoft. Jest to funkcja o nazwie Network Place.

  1. Otwórz Windows Explorer.

  2. Kliknij prawym przyciskiem myszy na pozycję Komputer w lewym panelu i wybierz “Add a network location”. Kliknij Next.

  3. Wybierz opcję “Select a custom network location” (była to jedyna zaprezentowana mi opcja) i kliknij Next.

  4. Wpisać żądaną ścieżkę UNC i kliknąć Next dwa razy. Dodaje to wpis, który pojawia się w lewym okienku Eksploratora Windows pod mapowanymi napędami, ale działa podobnie jak mapowany napęd i pojawia się w ten sposób w oknie dialogowym Zapisz aplikacje.

  5. W Eksploratorze Windows należy przejść przez ten wpis do żądanego podkatalogu i kliknąć w pustym obszarze po prawej stronie wyświetlacza ścieżki okruchów chleba w górnej części ekranu Eksploratora Windows, a ścieżka UNC zostanie wyświetlona i podświetlona.

4
4
4
2014-11-13 15:35:34 +0000
  1. Otwórz Folder.
  2. PRAWO przeciągnij plik z folderu do programu Microsoft Word.
3
3
3
2013-10-02 19:04:28 +0000

Przytrzymaj Shift w dół i kliknij prawym przyciskiem myszy na pliku i wybierz “Kopiuj jako ścieżkę”. Wpisz hiperłącze w wiadomości e-mail i wklej w polu adresu w oknie dialogowym hiperłącza.

Po utworzeniu hiperłącza w wiadomości e-mail, to koniec.

Link pokaże mapowaną literę dysku, co jest prawdą. Kiedy odbiorca(e) kliknie(ą) na link w emailu, podąży ścieżką UNC niezależnie od tego czy użytkownik jest zmapowany czy nie.

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

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

Można również kliknąć prawym przyciskiem myszy nazwę katalogu w widoku katalogu komputera i wybrać zmianę nazwy. W ten sposób uzyskasz dostęp do kopiowania ścieżki.

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

Zapisz to w swoim folderze sendto, mój jest w C:\Documents and Settings\xxxxID\SendTo z nazwą jak Copy UNC Filepath.vbs (musi się kończyć .vbs) Teraz, gdy klikniesz prawym przyciskiem myszy na folder lub plik, skopiuje on UNC do schowka. Naszym osobistym folderem jest dysk F, więc nie konwertuje on 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
```.
1
1
1
2016-02-03 19:51:46 +0000
  1. W oknie eksploratora, kliknij prawym przyciskiem myszy zmapowany dysk w drzewie plików po lewej stronie.
  2. Wybierz opcję Zmień nazwę.
  3. Gdy tekst jest podświetlony, kliknij prawym przyciskiem myszy.
  4. Teraz ścieżka jest kopiowana (z dodatkowym tekstem, który po skopiowaniu do nowej lokalizacji jest łatwo usuwany).
0
0
0
2014-10-09 22:20:56 +0000

Stwórz plik wsadowy DOS-a, taki jak showmappeddrives.bat, który zawiera:

@echo off    
net use
pause

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

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

**Jeśli odblokujesz dysk jako literę dysku, dodaj go ponownie jako “lokalizację sieciową” (tzn. kliknij prawym przyciskiem myszy na “Komputer” w oknie Eksploratora i wybierz “Dodaj lokalizację sieciową”) Wpisz pełną ścieżkę do folderu. Przechodząc dalej, na pasku adresu zostanie wyświetlona pełna ścieżka. Jednak aplikacje, które zależą od dysku jako litery mogą zawieść.

Przeglądając powyższe odpowiedzi, nie wydaje mi się, abym widział proste rozwiązanie, powyżej którego otrzymałem z: 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

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

W sieciach korporacyjnych większość działów IT tworzy akcje przy użyciu Przestrzeni Nazw DFS, w ramach Akcji DFS można kliknąć prawym przyciskiem myszy na folder i znaleźć jego adres docelowy.

Inną metodą jest sprawdzenie, czy Akcja jest opublikowana w Active Directory. Najłatwiejszym sposobem dla innych użytkowników jest znalezienie akcji 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 webowy (z WebDAV dla dostępu w stylu UNC) i oferuje wbudowane narzędzia do ostrzegania innych użytkowników o dokumentach.

Hope This Helps.

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

Kliknij prawym przyciskiem myszy na folder > Share > “ share to yourself (znaczy nic) . dostaniesz ścieżkę. /lub \ …lub kliknij pokaż wszystkie sieci współdzielone.

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

Klikniecie SHIFT + RightClick “Kopiuj jako ścieżkę” spowoduje skopiowanie nazwy dysku+filnu (tj. R:\test.doc), lub jeśli patrzysz na plik przez UNCpath - nazwy pliku UNCpath+filnu (tj. “\nas\Documents\test.doc”)

Jest to ‘standardowe’ zachowanie Windows, a więc moje ulubione, przede wszystkim wtyczki eksploratora, które spowalniają systemy… ;)