Copie la ruta de red UNC (no la letra de unidad) para las rutas en unidades asignadas desde el Explorador de Windows

87

Con frecuencia quiero compartir rutas de red de Windows a archivos con otras personas de mi equipo por correo electrónico o chat. Tenemos muchas unidades asignadas aquí, tanto las que configuramos nosotros mismos como las configuradas por nuestros jefes de TI. Lo que me gustaría poder hacer es copiar la ruta real completa (no la letra de la unidad) del Explorador de Windows para enviarla a la gente.

Ejemplo: Tengo un archivo en mi unidad "Q:", \\ cartman \ users \ emueller, y quiero enviar un enlace al archivo foo.doc en el mismo a los compañeros de trabajo. Cuando copio la ruta del archivo (shift + clic derecho, "copiar como ruta") aparece el nombre del archivo "Q: \ foo.doc" en el portapapeles. Esto no ayuda a otros, que necesitarían ver \\ cartman \ users \ emueller \ foo.doc para poder consumir el enlace.

En Explorer, conoce claramente la ruta completa: en la barra de direcciones veo "Computadora -> emueller (\\ cartman \ users) (Q :) ->". ¿Hay alguna manera de decir "hey man, copie esa ruta como texto con \\ cartman \ users \ emueller y no la Q: en ella?"

Sé que podría configurar ubicaciones de red mapeadas en lugar de las unidades mapeadas para las que configuré personalmente y evitar este problema, pero la mayoría de las unidades mapeadas como el "uso compartido" de los usuarios provienen de nuestra política de TI corporativa y no pueden ser anulado Simplemente podría hacer una ubicación de red separada y luego ignorar mi unidad Q: pero eso es un inconveniente (y lo hacen para que puedan mover cuentas a través de los servidores). Claro, mi ruta de correo electrónico podría romperse eventualmente porque estoy perdiendo la letra indirecta de la unidad, pero eso está bien conmigo.

Ernest Mueller
fuente
1
Si está ejecutando en un entorno corporativo bloqueado donde no puede instalar aplicaciones de terceros y / o acceder al registro, entonces esta solución funcionará ... superuser.com/a/704374/46099
Richard

Respuestas:

46

Tuve exactamente el mismo problema: no todos tenían las mismas unidades asignadas que yo, o asignadas a las mismas letras.

Después de mucho buscar, encontré una extensión de menú contextual llamada Path Copy Copy en GitHub ( https://pathcopycopy.github.io/ ), que es una versión extendida de una extensión anterior similar (llamada Pathcopy) que tiene bastantes opciones para copiar rutas como texto, incluido uno para rutas UNC; a continuación se muestran ejemplos de las opciones disponibles:

Ejemplo de menú contextual de copia de ruta

También puede elegir mostrar solo una o dos líneas en el menú contextual base, por ejemplo, puede tener dos líneas, Copiar ruta larga y Copiar ruta UNC larga. Es excelente para enviar por correo electrónico a los usuarios de su empresa que tienen acceso a una ruta de red, y si tienen la misma asignación de red que usted, puede elegir la primera, de lo contrario puede usar la segunda.

Actualización : a partir de la versión 12.0, un nuevo instalador "portátil" está disponible en el sitio anterior, que se instala solo para el usuario actual en la AppData\Localcarpeta. No he intentado esto, pero podría ser una solución para aquellos que tienen prohibido instalar normalmente.

i_saw_drones
fuente
44
Un poco desordenado, prefiero el uso de la red como lo sugiere Jimbo.
Jonas Byström
49

Tal vez un largo camino, pero abra una ventana de cmd. Entonces hazlonet use > filename

Luego abra el nombre del archivo y puede obtener la ruta:
Ej:

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

Apertura drives.txt

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

Puede copiar \\server\c\prog\netdel archivo para su uso.

Espero que esto ayude.

Jimbo
fuente
10
simple y fácil. Todas las demás soluciones en el tema son muy masivas ...
radistao
8
O simplemente omita el "> drives.txt" y copie la ruta de salida directamente desde la ventana del terminal.
DarenW
1
Simplemente fácil. Ganar.
CAD bloke
Con msysgit / bash a su alcance, esto es mucho más fácil que las otras soluciones. ¡Grandioso!
Jonas Byström
1
net use > filename me confundió ... y usé mi nombre de archivo pdf real en ese lugar, por lo tanto, golpeé mi archivo pdf original. Sí, sé que es mi mal. Así que ten cuidado. simplemente use net usey copie desde la ventana de terminal. y si realmente lo necesitas dentro de un archivo ... entonces sabes qué hacer ... '> uncpathnamefile.txt'
ihightower
38

ACTUALIZACIÓN: el enfoque de CoolCol es incluso más fácil que el mío. Vota esa respuesta.

Aquí está la solución que uso cuando envío rutas de red asignadas a través de Outlook:

  1. En el Explorador de Windows, mantenga presionado el shiftbotón, haga clic con el botón derecho en el archivo y seleccione " Copiar como ruta ".
  2. Inserte un hipervínculo en el correo electrónico y péguelo en el campo de dirección del cuadro de diálogo Hipervínculo. (Atajo: ctrl-K ctrl-V+ OK). En este punto, el enlace mostrará la letra de unidad asignada como root ( Q:\foo.doc).
  3. Ahora, haga clic y seleccione " Editar hipervínculo ... ", notará que el campo Dirección se ha traducido de nuevo a la ruta completa de UNC ( \\cartman\users\emueller\foo.doc). Con el mouse en el campo Dirección, presione ctrl-Ay ctrl-Cpara copiar la ruta completa al portapapeles, luego mueva el cursor al campo superior ("Texto para mostrar:") presione ctrl-Ay ctrl-Vmuestre correctamente en su correo electrónico.
kmote
fuente
No veo las cosas descritas.
DarenW
¿Qué parte no puedes ver? ¿Puedes crear el hipervínculo? ¿Sabes cómo editar el enlace?
kmote
3
En el paso 3. si escribe un carácter y lo elimina, actualizará el "Texto a mostrar", que es más fácil que copiar / pegar.
79E09796
No necesita escribir un carácter en el "Texto para mostrar" y luego eliminarlo, simplemente elimínelo.
Bae
1
Véase la respuesta de Coolcol superuser.com/a/922152/190599 para acelerar la copia haciendo clic derecho en "Crear acceso directo aquí" opción.
Bae
29

Geoff fue básicamente acertado, pero para ir un paso más allá,

  1. ARRASTRE A LA DERECHA la carpeta del Explorador de Windows al cuerpo de su nuevo correo electrónico,
  2. luego seleccione 'Crear hipervínculo aquí' .
Coolcol
fuente
1
más rápido y más rápido
Alex
3
Debería ser la mejor respuesta ya que el problema aparece principalmente en el entorno corporativo y no puede instalar el software allí usted mismo.
berezovskyi
Esto tiene que ser fusionado con la respuesta de kmote superuser.com/a/454119/190599 como los dos juntos son super rápido
Bae
19

Simplemente tenía la necesidad de lo mismo que OP está pidiendo y después de buscar en Google y leer las respuestas, ninguno de ellos proporcionó lo que creo que OP y yo estamos buscando.

El problema aquí es que uno puede asignar un Drive Yrecurso compartido de red, mientras que otra persona de la organización puede tener el mismo recurso compartido de red asignado Drive X; por lo tanto, enviar un enlace como Y:\mydirectorypuede no funcionar para nadie más que yo.

Como explica el OP, el Explorador muestra la ruta real en la barra del Explorador, pero no puede copiarlo (escribir es tedioso y propenso a errores, por lo que esta no es una opción) incluso si elige copy as pathdel menú contextual:

ingrese la descripción de la imagen aquí

Entonces, la solución que se me ocurrió (copiando el código de otra persona) fue un pequeño programa C # al que puede llamar desde un menú contextual en el Explorador y le permitirá traducir la letra de la unidad asignada a la real UNC path.

Aquí está el 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()));           
            }
        }
    }
}

Y aquí está la Pathingdefinición de la clase (intentaré encontrar la fuente real ya que no puedo recordar dónde la encontré):

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

Construye el programa y coloca el ejecutable en algún lugar de su PC, por ejemplo, en c:\Utils

Ahora agrega una opción de menú contextual en el Explorador de la siguiente manera:

Regedit y luego:

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"

Estás listo. Ahora verá esta opción cuando haga clic con el botón derecho en un directorio de una unidad asignada:

ingrese la descripción de la imagen aquí

Nota

Puedo proporcionar el ejecutable para que no tenga que hacer la compilación usted mismo. Simplemente envíeme una nota aquí.

Ícaro
fuente
1
Será bueno si comprime el archivo ejecutable y lo coloca en un espacio público como la carpeta pública de Dropbox y proporciona un enlace aquí. =)
ADTC
3
Mucho trabajo, prefiero el uso neto como lo sugiere Jimbo.
Jonas Byström
@ JonasByström Pero el resultado final es tan bueno como lo es para la pregunta del OP. De modo que "mucho trabajo" es precisamente lo que gana este responde a la upvote, a pesar de que no voy a utilizar personalmente
sehe
12

Ejecute el cmd.execomando 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

(¡Gracias Jimbo, tu respuesta fue buena pero no breve!)

Jonas Byström
fuente
2
Lamento tener solo un voto a favor para dar. Esto es de hecho conciso. Gracias.
user26398
1
Este es un enfoque ideal
Ryan B.
5

Alguien llamado Shawn Keene proporcionó una solución a esto en el Foro de Windows 7 en el sitio web de Microsoft. Está en una función llamada Network Place.

  1. Abre el Explorador de Windows.

  2. Haga clic derecho en la entrada de la computadora en el panel izquierdo y seleccione "Agregar una ubicación de red". Haga clic en Siguiente.

  3. Seleccione la opción "Elegir una ubicación de red personalizada" (era la única que se me presentó) y haga clic en Siguiente.

  4. Escriba la ruta UNC deseada y haga clic en Siguiente dos veces. Esto agrega una entrada que se muestra en el panel izquierdo del Explorador de Windows debajo de las unidades asignadas, pero funciona igual que una unidad asignada y se muestra de esa manera en el cuadro de diálogo Guardar de las aplicaciones.

  5. En el Explorador de Windows, navegue a través de esa entrada hasta el subdirectorio deseado y haga clic en el área en blanco a la derecha de la visualización de la ruta de migas de pan en la parte superior de la pantalla del Explorador de Windows y la ruta UNC aparece y se resalta.

marca
fuente
1
si va a citar otra fuente, ¿podría vincular también a esa fuente?
DMA57361
Originalmente de esta publicación, la fuente del W7 no se especificó allí: countrykeepers.com/wp/?p=3017
Marque
Hola, gracias por intervenir. Sé de esto, eso es lo que quise decir con "podría configurar ubicaciones de red mapeadas en lugar de las unidades mapeadas" en la pregunta: es que muchos de ellos vienen a mí como unidades mapeadas por cortesía de mi TI departamento, y me gustaría poder vincularlos. ¡Pero definitivamente es una posible solución a algunos de los problemas!
Ernest Mueller
PD: Votaría tu respuesta, pero no suficiente representante, así que "virtual +1"
Ernest Mueller
4
  1. Abre la carpeta.
  2. DERECHA arrastre un archivo de la carpeta a Microsoft Word.
Geoff
fuente
3

Mantenga Shiftpresionado y haga clic derecho en el archivo y seleccione "Copiar como ruta". Inserte un hipervínculo en el correo electrónico y péguelo en el campo de dirección del cuadro de diálogo Hipervínculo.

Después de crear el hipervínculo en el correo electrónico, ya está.

El enlace mostrará la letra de unidad asignada, esto es cierto. Cuando el destinatario hace clic en el enlace del correo electrónico, seguirá la ruta UNC, independientemente de si el usuario está asignado o no.

He intentado esto en otras aplicaciones de Office 2010, Excel, Power Point y Word.

keNscale
fuente
Esto funciona, pero es la misma respuesta que la respuesta de
kmote
2

También puede hacer clic con el botón derecho en el nombre del directorio en la vista del directorio de la computadora y seleccionar cambiar nombre. Esto le dará acceso para copiar la ruta.

Craig
fuente
1
  1. En la ventana del explorador, haga clic derecho en la unidad asignada en el árbol de archivos a la izquierda.
  2. Selecciona Cambiar nombre.
  3. Mientras el texto está resaltado, haga clic derecho-> copiar.
  4. Ahora se copia la ruta (con texto adicional que se elimina fácilmente después de copiarse en una nueva ubicación).
ThomB
fuente
1
Tenga en cuenta que la ruta verdadera no siempre aparece allí, como lo demuestra el hecho de que puede cambiarle el nombre.
Ben N
1

Guarde esto en su carpeta sendto, el mío está C:\Documents and Settings\xxxxID\SendTo con un nombre como Copy UNC Filepath.vbs (debe terminar .vbs) Ahora, cuando hace clic derecho en una carpeta o archivo, copiará la UNC al portapapeles. Nuestra carpeta personal es la unidad F y, por lo tanto, no convierte C: ni 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
fuente
De Andrew Kelly : @Colkerr, traté de usar su "Copiar UNC Filepath.vbs" pero recibo un error de compilación de VBScript en el carácter 54 de la línea 2 "Fin esperado de la declaración"
Canadian Luke
Este código no funciona En su lugar, vería superuser.com/a/704374/46099 si se encuentra en un entorno corporativo bloqueado.
Richard
Para encontrar la carpeta de envío a, escriba esto en la barra de ubicación del explorador de archivos: shell: sendto El script funcionó bien para mí. fuente: dummies.com/computers/operating-systems/windows-7/…
David Lotts
0

En las redes corporativas, la mayoría de los departamentos de TI crean recursos compartidos utilizando espacios de nombres DFS, dentro de los recursos compartidos DFS puede hacer clic derecho en una carpeta y encontrar su objetivo.

El otro método sería ver si el recurso compartido se publica en Active Directory. La forma más fácil para que otros usuarios encuentren recursos compartidos sin conocer la ruta UNC o el nombre / ruta del servidor de archivos.

Si comparte documentos con una gran cantidad de usuarios, algo como Microsoft SharePoint puede ser una mejor solución, ya que ofrece una interfaz web (con WebDAV para acceso de estilo UNC) y ofrece herramientas integradas para alertar a otros usuarios sobre los documentos.

Espero que esto ayude.

dmd83
fuente
1
Cuando hago clic con el botón derecho en mis carpetas no veo la opción "buscar destino", ¿qué quiere decir exactamente? Quiero decir, puedo ver el camino real, no es un misterio, solo quiero poder cortarlo y pasarlo y no escribir. En cuanto a Sharepoint, $ 50k en software no es mi respuesta ideal a "pero no puedo simplemente cortar y pegar un camino ..."
Ernest Mueller
0

Cree un archivo por lotes de DOS como el showmappeddrives.batque contiene:

@echo off    
net use
pause

Coloque el archivo en su escritorio si lo desea.
Haga doble clic en él y mostrará todas sus unidades asignadas.

El príncipe
fuente
Si agrega una explicación de cómo usar esto, su respuesta sería un duplicado de la respuesta de Jimbo de hace 2 años y medio.
G-Man
0

Haga clic derecho en la carpeta> Compartir> "compartir con usted mismo (no significa nada). Obtendrá la ruta. / O \. O haga clic en Mostrar toda la red compartida.

aabbcc
fuente
0

Solución simple alternativa:

Si desasigna la unidad como una letra de unidad, vuelva a agregarla como una "ubicación de red" (es decir, haga clic con el botón derecho en "Computadora" en la ventana del Explorador y seleccione "Agregar una ubicación de red") Escriba la ruta completa de la carpeta . En adelante, mostrará la ruta completa en la barra de direcciones. Sin embargo, las aplicaciones que dependen de la unidad como una letra pueden fallar.

Mirando las respuestas anteriores, no creo haber visto la solución simple que obtuve 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

Aiju
fuente
-2

SHIFT + RightClick "Copiar como ruta" copiará la unidad + nombre de archivo (es decir, R: \ test.doc), o si está mirando el archivo a través de UNCpath, el nombre de archivo UNCpath + (es decir, "\ nas \ Documents \ test.doc ")

Este es el comportamiento 'estándar' de Windows y, por lo tanto, mi favorito, sobre todo los complementos de explorador que ralentizan los sistemas ...;)

Luuk
fuente
1
Esto no ayuda a resolver mi problema.
Ernest Mueller