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

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

Quero frequentemente partilhar caminhos de rede do Windows para ficheiros com outras pessoas da minha equipa via e-mail ou chat. Temos aqui muitas unidades mapeadas, tanto as que nós próprios configuramos como as que são configuradas pelos nossos superlords 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 ao pessoal.

Exemplo: Tenho um ficheiro na minha drive “Q:”, {\i1}cartman}users}emueller, e quero enviar um link para o ficheiro foo.doc para os colegas de trabalho. Quando copio o caminho do ficheiro (shift+clique com o botão direito do rato, “copy as path”) recebe o nome do ficheiro “Q:\foo.doc” na área de transferência. Isto é inútil para outros, que precisariam de ver o ficheiro “cartman.doc” para poderem consumir o link.

No Explorer conhece claramente o caminho completo - na barra de endereços vejo “Computer -> emueller (\cartman.doc) (Q:) ->”. Existe alguma forma de dizer “hey man copy that path as text with the \cartman\users\emueller not the Q: in it?”

Eu sei que poderia simplesmente configurar localizações de rede mapeadas em vez das unidades mapeadas para as que eu configurei pessoalmente e evitar este problema, mas a maioria das unidades mapeadas como a partilha de “utilizadores” vem da nossa política corporativa de TI e não pode ser anulada. Eu poderia simplesmente fazer uma localização de rede separada e depois ignorar a minha drive Q: mas isso é inconveniente (e eles fazem-no para que possam mover contas através dos servidores). Claro que o meu caminho por e-mail pode acabar por se quebrar porque estou a perder a carta de condução indirecta, mas por mim tudo bem.

Respostas (17)

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

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

Depois abra o nome do ficheiro e pode obter o caminho: Ex:

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

Abertura 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 ficheiro para o seu uso.

Espero que isto ajude.

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

Tive exactamente o mesmo problema - nem todos tinham as mesmas unidades mapeadas que eu, ou mapeadas com as mesmas letras.

Após muita pesquisa encontrei uma extensão de menu de contexto chamada Path Copy Copy no GitHub https://pathcopycopy.github.io/ ) que é uma versão estendida de uma extensão similar, mais antiga (chamada Pathcopy) tem várias opções para copiar caminhos como texto, incluindo uma para caminhos UNC - exemplo das opções disponíveis são mostradas abaixo:

Também pode optar por mostrar apenas uma ou duas linhas no menu de contexto base, por exemplo, pode ter duas linhas, Copy Long Path, e Copy Long UNC Path. É óptimo para os utilizadores de e-mail na sua empresa que têm acesso a um caminho de rede, e se tiverem o mesmo mapeamento de rede que você, pode escolher o primeiro, caso contrário pode usar o segundo.

Update : A partir da versão 12.0, um novo instalador “portátil” está disponível no site acima, que se instala apenas para o utilizador actual na pasta AppData\Local. Eu não tentei isto, mas pode ser a solução para aqueles que estão proibidos de instalar normalmente.

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

UPDATE: A abordagem da CoolCol é ainda mais fácil do que a minha. Actualizar essa resposta.

Aqui está a solução que utilizo quando envio caminhos de rede mapeada via Outlook:

  1. No Windows Explorer, mantenha o botão shift pressionado, r-clique no ficheiro, e seleccione “ Copy as path”.
  2. Insira um Hyperlink no e-mail e cole no campo de endereço da caixa de diálogo do Hyperlink. (Atalho: ctrl-K ctrl-V + OK). Neste ponto, o link exibirá a letra mapped drive como a raiz (Q:\foo.doc).
  3. Agora, r-clique e seleccione “ Editar Hyperlink…” irá notar que o campo Endereço foi traduzido de volta para o caminho UNC completo (\cartman\users\emueller\foo.doc). Com o rato no campo Address, carregue em ctrl-A e ctrl-C para copiar o caminho completo para a sua área de transferência, depois mova o cursor para o campo superior (“Text to Display:”) carregue em ctrl-A e ctrl-V para o visualizar correctamente no seu e-mail.
32
32
32
2015-06-01 08:49:58 +0000

O Geoff estava basicamente no ponto, mas para avançar um passo,

  1. RIGREGUE a pasta do Windows Explorer, para o corpo do seu novo email,
  2. depois seleccione ‘Create Hyperlink Here’.
20
20
20
2012-08-24 20:23:12 +0000

Eu apenas tive a necessidade da mesma coisa que o PO está a perguntar e depois de pesquisar no Google e ler as respostas, nenhum deles forneceu o que penso que o PO e eu estamos à procura.

O problema aqui é que se pode mapear uma partilha de rede para Drive Y enquanto outra pessoa na organização pode ter a mesma partilha de rede mapeada que Drive X; portanto, enviar uma ligação como Y:\mydirectory pode não funcionar para mais ninguém a não ser para mim.

Como o OP explica, o Explorer mostra o caminho real na barra do Explorer, mas não é possível copiá-lo (escrever é aborrecido e propenso a erros, por isso esta não é uma opção) mesmo que escolha copy as path no menu de contexto:

Então a solução que eu arranjei (copiando o código de outra pessoa) foi um pequeno programa em C# que pode chamar a partir de um menu de contexto no Explorer e que lhe permitirá traduzir a letra da unidade mapeada para o UNC path real.

Aqui está o có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 (Vou tentar encontrar o verdadeiro código fonte pois não me consigo lembrar onde o 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: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;
    }
}

Você constrói o programa e coloca o executável algures no seu PC, digamos por exemplo, em c:\Utils

Agora adiciona uma opção de menu de contexto no Explorer assim:

Regedit e depois:

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ê está feito. Agora vai ver esta opção quando clicar com o botão direito do rato num directório de uma unidade mapeada:

Nota

Eu posso fornecer o executável para que não tenha de ser você a fazer a compilação. Basta deixar-me uma nota aqui.

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

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, a sua resposta foi boa mas não breve!)

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

Alguém chamado Shawn Keene forneceu uma solução para isto no fórum do Windows 7 no site da Microsoft. Está numa funcionalidade chamada Network Place.

  1. Abra o Windows Explorer.

  2. Clique com o botão direito do rato na entrada Computador no painel esquerdo e seleccione “Adicionar um local de rede”. Clique em Next.

  3. Seleccione a opção “Choose a custom network location” (foi a única que me foi apresentada) e clique em Next.

  4. Digite o caminho UNC desejado e clique duas vezes em Seguinte. Isto adiciona uma entrada que aparece no painel esquerdo do Windows Explorer abaixo das unidades mapeadas, mas funciona tal como uma unidade mapeada e aparece assim no diálogo Guardar aplicações.

  5. No Windows Explorer, navegue através dessa entrada até ao subdirectório desejado e clique na área em branco à direita da apresentação do caminho de migalhas no topo do ecrã do Windows Explorer e o caminho UNC aparece e é realçado.

4
4
4
2014-11-13 15:35:34 +0000
  1. Abra o Folder.
  2. Arraste um ficheiro da pasta para o Microsoft Word.
3
3
3
2013-10-02 19:04:28 +0000

Mantenha o Shift pressionado e clique com o botão direito do rato no ficheiro e seleccione “Copiar como caminho”. Insira um Hyperlink no e-mail e cole no campo de endereço da caixa de diálogo Hyperlink.

Depois de criar o hyperlink no e-mail, está feito.

O link irá mostrar a letra da unidade mapeada isto é verdade. Quando o(s) destinatário(s) clica(m) no link do e-mail, este irá seguir o caminho UNC quer o utilizador esteja ou não mapeado.

Já experimentei isto noutras aplicações Office 2010, Excel, Power Point e Word.

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

Também pode clicar com o botão direito do rato no nome do directório na vista do directório do computador e seleccionar renomear. Isto dar-lhe-á acesso para copiar o caminho.

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

Guarde isto na sua pasta sendto, a minha está em C:\Documents and Settings\xxxxID\SendTo com um nome como Copy UNC Filepath.vbs (deve terminar .vbs) Agora quando clicar com o botão direito do rato numa pasta ou ficheiro, esta irá copiar a UNC para a área de transferência. A nossa pasta pessoal é a unidade F e por isso não converte nem C: nem 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. Na janela do explorador, clique com o botão direito do rato na unidade mapeada na árvore de ficheiros do lado esquerdo.
  2. Seleccione Renomear.
  3. Enquanto o Texto está realçado, clique com o botão direito do rato sobre a opção “Copy”.
  4. Agora o caminho é copiado (com algum texto extra que é facilmente apagado depois de copiado para um novo local.
0
0
0
2014-10-09 22:20:56 +0000

Crie um ficheiro DOS batch como o showmappeddrives.bat que contém:

@echo off    
net use
pause

Coloque o ficheiro no seu ambiente de trabalho se quiser. Faça duplo clique nele e ele irá mostrar todas as suas unidades mapeadas.

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

Alternative Simple Solution:

Se desmarcar a unidade como letra de unidade, em vez disso volte a lê-la como “network location” (ou seja, clique com o botão direito do rato em “Computer” na Janela do Explorador e seleccione “Add a network location”) Digite o caminho completo para a pasta. Se avançar, irá mostrar o caminho completo na barra de endereços. Contudo, aplicações que dependem da unidade como uma letra podem falhar.

Olhando para as respostas acima acho que não vi a solução simples acima da qual obtive de: 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

Nas redes empresariais a maioria dos Departamentos de TI criam acções utilizando os Espaços de Nomes da DFS, dentro das Acções da DFS pode clicar com o botão direito do rato numa pasta e encontrar o seu alvo.

O outro método seria ver se a Acção é publicada no Active Directory. A forma mais fácil para outros utilizadores encontrarem acções sem conhecerem o caminho UNC ou o nome / caminho do File Server.

Se partilha documentos com um grande número de utilizadores, 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 utilizadores para os documentos.

Hope This Helps.

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

Clique com o botão direito do rato na pasta > Share > “ share to yourself (não significa nada) . você vai ter o caminho. / ou > ou clique em mostrar toda a rede partilhada.

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

O SHIFT + RightClick “Copy as path” irá copiar o drive+filename (i.e. R:\test.doc), ou se estiver a olhar para o ficheiro via UNCpath o UNCpath+filename (i.e. “\nas\Documents\test.doc”)

Este é o comportamento ‘standard’ do Windows, e portanto o meu favorito, acima de tudo os plugins exploradores que abrandam os sistemas… ;)