Copie o caminho de rede UNC (não a letra da unidade) para caminhos em unidades mapeadas do Windows Explorer

77

Frequentemente, quero compartilhar caminhos de rede do Windows com outros membros da minha equipe por e-mail ou bate-papo. Temos muitas unidades mapeadas aqui, ambas configuradas por nós mesmos e criadas por nossos senhores de TI. O que eu gostaria de poder fazer é copiar o caminho real completo (não a letra da unidade) do Windows Explorer para enviar para as pessoas.

Exemplo: eu tenho um arquivo na minha unidade "Q:", \\ cartman \ users \ emueller, e desejo enviar um link para o arquivo foo.doc para os colegas de trabalho. Quando copio o caminho do arquivo (Shift + clique direito, "Copiar como caminho"), ele obtém o nome do arquivo "Q: \ foo.doc" na área de transferência. Isso é inútil para os outros, que precisariam ver \\ cartman \ users \ emueller \ foo.doc para poder consumir o link.

No Explorer, ele conhece claramente o caminho completo - na barra de endereços, vejo "Computador - > emueller (\\ cartman \ users) (Q :) - >". Existe uma maneira de dizer "ei homem copiar esse caminho como texto com o \\ cartman \ users \ emueller não o Q: in it?"

Sei que posso configurar locais de rede mapeados em vez das unidades mapeadas para as que configuro pessoalmente e evitar esse problema, mas a maioria das unidades mapeadas, como o compartilhamento "usuários", vem de nossa política de TI corporativa e não pode ser substituído. Eu poderia apenas fazer uma localização de rede separada e, em seguida, ignorar a minha unidade Q: mas isso é inconveniente (e eles fazem isso para que eles possam mover contas em servidores). Claro que meu caminho enviado por e-mail pode acabar se quebrando porque estou perdendo a indireta da letra da unidade, mas tudo bem para mim.

    
por Ernest Mueller 11.02.2011 / 16:29

17 respostas

41

Eu tive exatamente o mesmo problema - nem todos tinham as mesmas unidades mapeadas que eu ou mapeadas para as mesmas letras.

Depois de muita pesquisa, encontrei uma extensão de menu de contexto chamada Cópia de cópia de caminho no GitHub ( link ), que é uma versão estendida de uma extensão antiga similar (chamada Pathcopy) tem algumas opções para copiar caminhos como texto, incluindo um para caminhos UNC - exemplo das opções disponíveis são mostradas abaixo:

Vocêtambémpodeoptarpormostrarapenasumaouduaslinhasnomenudecontextobásico,porexemplo,vocêpodeterduaslinhas,CopiarcaminholongoeCopiarcaminhoUNClongo.Éótimoenviare-mailsparausuáriosdasuaempresaquetenhamacessoaumcaminhoderedee,seelestiveremomesmomapeamentoderedequevocê,vocêpodeescolheroprimeiro,casocontrário,vocêpoderáusaroúltimo.

Atualização:Apartirdaversão12.0,umnovoinstalador"portátil" está disponível no site acima, que é instalado apenas para o usuário atual na pasta AppData\Local . Eu não tentei isso, mas poderia ser uma solução para aqueles que são proibidos de instalar normalmente.

    
por 25.08.2012 / 01:20
47

Talvez um longo caminho, mas abra uma janela cmd. Então faça net use > filename

Em seguida, abra o nome do arquivo e você pode obter o caminho:
Ex:

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

Abrindo drives.txt

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

Pode copiar \server\c\prog\net do arquivo para seu uso.

Espero que isso ajude.

    
por 19.04.2012 / 19:19
35

ATUALIZAÇÃO: A abordagem do CoolCool é ainda mais fácil que a minha . Vota a sua resposta.

Esta é a solução alternativa que eu uso ao enviar caminhos de rede mapeada via Outlook:

  1. No Windows Explorer, mantenha o botão shift pressionado, clique com o botão no arquivo e selecione " Copiar como caminho ".
  2. Insira um hiperlink no email e cole no campo de endereço da caixa de diálogo Hiperlink. (Atalho: ctrl-K ctrl-V + OK). Neste ponto, o link exibirá a letra da unidade mapeada como a raiz ( Q:\foo.doc ).
  3. Agora, r-clique e selecione " Editar hiperlink ... " você notará que o campo Endereço foi traduzido de volta para o caminho UNC completo ( \cartman\users\emueller\foo.doc ). Com o mouse no campo Address, pressione ctrl-A e ctrl-C para copiar o caminho completo para a área de transferência e mova o cursor para o campo superior ("Text para mostrar: ") aperte ctrl-A e ctrl-V para exibi-lo corretamente em seu email.
por 26.07.2012 / 23:41
23

Geoff estava basicamente no local, mas para dar um passo adiante,

  1. RIGHT-DRAG a pasta do Windows Explorer para o corpo do seu novo email,
  2. selecione 'Criar hiperlink aqui' .
por 01.06.2015 / 10:49
17

Eu só tive a necessidade da mesma coisa que a OP está pedindo e depois de pesquisar no Google e ler as respostas, nenhuma delas forneceu o que eu acho que o OP e eu estamos procurando.

O problema aqui é que alguém pode mapear um compartilhamento de rede para Drive Y , enquanto outra pessoa na organização pode ter o mesmo compartilhamento de rede mapeado como Drive X ; portanto, o envio de um link como Y:\mydirectory pode não funcionar para qualquer outra pessoa, exceto eu.

Como o OP explica, o Explorer mostra o caminho real na barra do Explorer, mas você não pode copiá-lo (a digitação é entediante e propensa a erros, por isso não é uma opção) mesmo se você escolher copy as path do contexto menu:

Portanto,asoluçãoqueobtive(copiandoocódigodeoutrapessoa)foiumpequenoprogramaemC#quevocêpodechamardeummenudecontextonoExplorerepermitiráquevocêtraduzaaletradaunidadeMapeadaparaorealUNCpath./p>

Esteéocódigo:

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

E aqui está a definição da classe Pathing (tentarei encontrar a fonte real, pois não me lembro onde a encontrei):

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:08-02-29"
    /// might return: "\networkserver\Shares\Photos08-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;
    }
}

Você constrói o programa e coloca o executável em algum lugar do seu PC, por exemplo, em c:\Utils

Agora você adiciona uma opção de menu de contexto no Explorer da seguinte forma:

Regedit e, em seguida:

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"

Você terminou. Agora você verá essa opção quando clicar com o botão direito do mouse em um diretório de uma unidade mapeada:

Nota

Eu posso fornecer o executável para que você não tenha que fazer a compilação por conta própria. Simplesmente me mande uma nota aqui.     
por 24.08.2012 / 22:23
11

Execute o comando 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

(Obrigado Jimbo, seu responder foi bom, mas não breve!)

    
por 16.10.2013 / 14:16
5

Alguém chamado Shawn Keene forneceu uma solução para isso no Fórum do Windows 7 no site da Microsoft. Está em um recurso chamado Network Place.

  1. Open Windows Explorer.

  2. Right-click on the Computer entry in the left pane and select “Add a network location”. Click next.

  3. Select the “Choose a custom network location” option (it was the only one presented to me) and click Next.

  4. Type in the UNC path desired and click Next twice. This adds an entry that shows up in left pane of Windows Explorer below the mapped drives, but it works just like a mapped drive and shows up that way in the Save dialog of applications.

  5. In Windows Explorer, navigate through that entry to the desired sub-directory and click in the blank area to the right of the bread crumbs path display in the top of the Windows Explorer screen and the UNC path appears and is highlighted.

    
por 17.02.2011 / 13:04
4
  1. Abra a pasta.
  2. RIGHT arrastar um arquivo da pasta para o Microsoft Word.
por 13.11.2014 / 16:35
3

Pressione Shift para baixo e clique com o botão direito no arquivo e selecione "Copiar como caminho". Insira um Hyperlink no email e cole no campo de endereço da caixa de diálogo Hyperlink.

Depois de criar o hiperlink no email, você está pronto.

O link mostrará a letra da unidade mapeada. Quando o (s) destinatário (s) clica no link no e-mail, ele seguirá o caminho UNC, independentemente de o usuário estar mapeado ou não.

Eu tentei isso em outros aplicativos do Office 2010, Excel, Power Point e Word.

    
por 02.10.2013 / 21:04
2

Você também pode clicar com o botão direito do mouse no nome do diretório na visualização do diretório do computador e selecionar renomear. Isso lhe dará acesso para copiar o caminho.

    
por 28.09.2012 / 15:42
1
  1. Na janela do explorer, clique com o botão direito do mouse na unidade mapeada na árvore de arquivos à esquerda.
  2. Selecione Renomear.
  3. Enquanto o texto estiver realçado, clique com o botão direito do > copy.
  4. Agora, o caminho é copiado (com algum texto extra que é facilmente excluído depois de copiado para um novo local.
por 03.02.2016 / 20:51
0

Em redes corporativas, a maioria dos departamentos de TI cria compartilhamentos usando Espaços de nome DFS, dentro de compartilhamentos DFS, você pode clicar com o botão direito do mouse em uma pasta e encontrar o destino.

O outro método seria verificar se o compartilhamento é publicado no Active Directory. A maneira mais fácil para outros usuários encontrarem ações sem conhecer o caminho UNC ou o nome / caminho do servidor de arquivos.

Se você compartilha documentos com um grande número de usuários, algo como o Microsoft SharePoint pode ser uma solução melhor, pois oferece uma interface web (com WebDAV para acesso ao estilo UNC) e oferece ferramentas integradas para alertar outros usuários sobre documentos.

Espero que isso ajude.

    
por 12.02.2011 / 23:06
0

Crie um arquivo em lote do DOS como showmappeddrives.bat , que contém:

@echo off    
net use
pause

Coloque o arquivo na sua área de trabalho, se quiser.
Clique duas vezes e mostrará todas as suas unidades mapeadas.

    
por 10.10.2014 / 00:20
0

Clique com o botão direito na pasta > Compartilhar > "compartilhe com você mesmo (não significa nada). você obterá o caminho. / ou \. ou clique em mostrar toda a rede compartilhada.

    
por 24.11.2016 / 07:37
0

Salve isso na sua pasta sendto, a minha está em %código% com um nome como C:\Documents and Settings\xxxxID\SendTo (deve terminar .vbs) Agora, quando você clica com o botão direito do mouse em uma pasta ou arquivo, ele copia o UNC para a área de transferência. Nossa pasta pessoal é a unidade F e por isso não converte C: ou 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
    
por 16.10.2013 / 15:33
0

Solução simples alternativa:

Se você desmapear a unidade como uma letra de unidade, adicione-a novamente como "local de rede" (ou seja, clique com o botão direito do mouse em "Computador" na janela do Explorer e selecione "Adicionar local de rede") para a pasta. A partir de agora, ele exibirá o caminho completo na barra de endereço. No entanto, os aplicativos que dependem da unidade como uma carta podem falhar.

Olhando as respostas acima, não acho que tenha visto a solução simples acima da qual obtive: link

    
por 20.04.2018 / 20:34
-2

O SHIFT + RightClick "Copiar como caminho" irá copiar a unidade + nome do arquivo (ou seja, R: \ test.doc), ou se você estiver olhando para o arquivo via UNCpath, o UNCpath + filename (por exemplo, "\ nas \ Documents \ test.doc")

Este é o comportamento 'padrão' do Windows e, portanto, o meu favorito, acima de todos os plugins do explorador que retardam os sistemas ....;)

    
por 21.02.2015 / 10:33