Question Copier le chemin réseau UNC (pas la lettre du lecteur) pour les chemins d'accès sur les lecteurs mappés à partir de l'Explorateur Windows


Je souhaite fréquemment partager des chemins de réseau Windows avec des fichiers avec d'autres personnes de mon équipe par e-mail ou par chat. Nous avons beaucoup de lecteurs mappés ici, les deux que nous avons installés nous-mêmes et ceux mis en place par nos seigneurs informatiques. Ce que je voudrais pouvoir faire est de copier le chemin réel complet (pas la lettre du lecteur) de Windows Explorer pour l'envoyer aux gens.

Exemple: J'ai un fichier dans mon lecteur "Q:", \\ cartman \ users \ emueller, et je veux envoyer un lien vers le fichier foo.doc aux collègues. Lorsque je copie le chemin du fichier (shift + clic droit, "copier comme chemin"), il reçoit le nom de fichier "Q: \ foo.doc" dans le presse-papiers. Ceci est inutile pour les autres, qui devraient voir \\ cartman \ users \ emueller \ foo.doc pour pouvoir utiliser le lien.

Dans Explorer, il connaît clairement le chemin complet - dans la barre d'adresse que je vois "Ordinateur -> emueller (\\ cartman \ users) (Q :) ->". Y at-il un moyen de dire "hey man copier ce chemin sous forme de texte avec le \\ cartman \ users \ emueller et non pas le Q: dedans?"

Je sais que je pourrais simplement configurer des emplacements réseau mappés au lieu des lecteurs mappés pour ceux que j'ai configurés personnellement et éviter ce problème, mais la plupart des lecteurs mappés tels que le partage «utilisateurs» proviennent de notre stratégie informatique d'entreprise et ne peuvent pas être remplacé. Je pouvais simplement créer un emplacement réseau distinct, puis ignorer mon lecteur Q: mais cela ne convient pas (et ils le font pour pouvoir déplacer des comptes sur des serveurs). Bien sûr, mon chemin envoyé par e-mail risque de se briser car je perds l'indirection de lettre de lecteur, mais cela ne me dérange pas.


77
2018-02-11 15:29


origine


Si vous travaillez dans un environnement d'entreprise verrouillé où vous ne pouvez installer aucune application tierce et / ou accéder au registre, cette solution fonctionnera ... superuser.com/a/704374/46099 - Richard


Réponses:


J'ai eu exactement le même problème - tout le monde n'avait pas les mêmes lecteurs mappés que moi, ou mappés sur les mêmes lettres.

Après de nombreuses recherches, j'ai trouvé une extension de menu contextuel nommée Copie de chemin d'accès sur GitHub (https://pathcopycopy.github.io/) qui est une version étendue d'une ancienne extension similaire (appelée Pathcopy) a plusieurs options pour copier des chemins sous forme de texte, y compris une pour les chemins UNC - des exemples d'options disponibles sont présentés ci-dessous:

Path Copy Context Menu example

Vous pouvez également choisir d'afficher une ou deux lignes seulement dans le menu contextuel de base. Par exemple, vous pouvez avoir deux lignes: Copier long chemin et Copier long chemin UNC. C'est idéal pour envoyer des courriers électroniques aux utilisateurs de votre entreprise qui ont accès à un chemin de réseau, et s'ils ont le même mappage de réseau que vous, vous pouvez choisir le premier, sinon vous pouvez utiliser ce dernier.

Mettre à jour: A partir de la version 12.0, un nouveau programme d'installation "portable" est disponible sur le site ci-dessus, qui s'installe uniquement pour l'utilisateur AppData\Local dossier. Je n'ai pas essayé ceci, mais cela pourrait être une solution pour ceux qui ne peuvent pas installer normalement.


41
2017-08-24 23:20



Un peu en désordre, je préfère beaucoup utilisation nette comme suggéré par Jimbo. - Jonas Byström


Peut-être un long chemin, mais ouvrez une fenêtre cmd. Alors fais net use > filename

Ensuite, ouvrez le nom du fichier et vous pouvez obtenir le chemin:
Ex:

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

Ouverture drives.txt

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

Peut copier \\server\c\prog\net à partir du fichier pour votre usage.

J'espère que cela t'aides.


46
2018-04-19 17:19



simple et facile. Toutes les autres solutions du sujet sont très volumineuses ... - radistao
Ou, ignorez simplement le "> drives.txt" et copiez le chemin de sortie directement depuis la fenêtre du terminal. - DarenW
Simple et facile Gagner. - CAD bloke
Avec msysgit / bash au bout des doigts, c'est beaucoup plus facile que les autres solutions. Grandiose! - Jonas Byström


Voici la solution de contournement que j'utilise pour envoyer des chemins réseau mappés via Outlook:

  1. Dans l'Explorateur Windows, maintenez la décalage bouton vers le bas, r-clic sur le fichier et sélectionnez "Copier comme chemin".
  2. Insérez un lien hypertexte dans le courrier électronique et collez-le dans le champ d'adresse de la boîte de dialogue Lien hypertexte. (Raccourci: ctrl-K  ctrl-v + OK). À ce stade, le lien affichera le cartographié lettre de lecteur en tant que racine (Q:\foo.doc).
  3. À présent, r-clic et sélectionnez "Modifier le lien hypertexte ..."Vous remarquerez que le champ Adresse a été traduit de nouveau dans le chemin UNC complet (\\cartman\users\emueller\foo.doc). Avec votre souris dans le champ Adresse, appuyez sur ctrl-a et ctrl-c pour copier le chemin complet dans votre presse-papiers, déplacez votre curseur sur le champ supérieur ("Texte à afficher:") ctrl-a et ctrl-v pour l'afficher correctement dans votre email.

34
2017-07-26 21:41



Je ne vois pas les choses décrites. - DarenW
quelle partie ne peux-tu pas voir? Pouvez-vous créer le lien hypertexte? Savez-vous comment modifier le lien? - kmote
A l'étape 3, si vous tapez un caractère et le supprimez, le texte à afficher sera mis à jour, ce qui est plus facile que copier / coller. - 79E09796
Vous n'avez pas besoin de taper un caractère dans le "Texte à afficher" puis de le supprimer, il suffit de le supprimer. - Bae
Voir la réponse de Coolcol superuser.com/a/922152/190599 pour accélérer la copie par un clic droit "Créer un raccourci ici" option. - Bae


Geoff était essentiellement sur place, mais pour aller plus loin,

  1. RIGHT-DRAG le dossier de Windows Explorer, dans le corps de votre nouvel email,
  2. puis sélectionnez "Créer un lien hypertexte ici".

21
2018-06-01 08:49



le plus rapide et le plus hors du box-est - Alex
Devrait être la meilleure réponse, car le problème apparaît surtout dans l'environnement de l'entreprise et vous ne pouvez pas installer de logiciel sur place. - berezovskyi
Cela doit être fusionné avec la réponse de kmote superuser.com/a/454119/190599 comme les deux ensemble sont super rapides - Bae


J'avais juste besoin de la même chose qu'OP demande et après avoir cherché sur Google et lu les réponses, aucun d'entre eux n'a fourni ce que je pense que je cherche.

Le problème ici est que l’on peut mapper un partage réseau Drive Y alors que quelqu'un d'autre dans l'organisation peut avoir le même partage réseau que Drive X; par conséquent, l'envoi d'un lien tel que Y:\mydirectory peut ne pas fonctionner pour quelqu'un d'autre que moi.

Comme l'explique l'OP, Explorer affiche le chemin réel dans la barre de l'Explorateur, mais vous ne pouvez pas le copier (la saisie est fastidieuse et sujette aux erreurs, ce n'est donc pas une option) même si vous choisissez copy as path dans le menu contextuel:

enter image description here

Donc, la solution que j'ai proposée (en copiant le code de quelqu'un d'autre) était un petit programme C # que vous pouvez appeler à partir d'un menu contextuel dans l'Explorateur et vous permettra de traduire la lettre du lecteur Mapped UNC path.

Voici le code:

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

Et voici la Pathing définition de la classe (je vais essayer de trouver la source réelle car je ne me souviens plus où je l'ai trouvé):

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

Vous construisez le programme et placez l'exécutable quelque part dans votre PC, par exemple, dans c:\Utils

Maintenant, vous ajoutez une option de menu contextuel dans l'Explorateur en tant que tel:

Regedit et alors:

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"

Vous avez terminé. Maintenant, vous verrez cette option lorsque vous cliquez avec le bouton droit sur un répertoire d'un lecteur mappé:

enter image description here

Remarque

Je peux fournir l'exécutable afin que vous n'ayez pas à faire la compilation vous-même. Envoyez-moi simplement une note ici.


17
2017-08-24 20:23



Sera gentil si vous avez compressé le fichier exécutable et mis dans un espace public comme Dropbox Publique dossier et fourni un lien ici. =) - ADTC
Beaucoup de travail, je préfère beaucoup utilisation nette comme suggéré par Jimbo. - Jonas Byström
@ JonasByström Mais le résultat final est aussi bon que possible pour la question des OP. Pour que "beaucoup de travail" soit précisément ce qui rapporte cette réponse à la hausse, même si je ne vais pas l'utiliser personnellement - sehe
@sehe Si c'est "précisément", il serait encore plus enclin s'il ajoutait plus d'étapes, impliquant peut-être un antivirus Norton et un marteau pour taper au clavier. Probablement. Certaines personnes ont voté pour Sarah Palin. Et alors? Les débiles font ce qu'ils font, mais ne le justifient pas. «Critique constructive» Je crois que ce qui précède est appelé. - Jonas Byström


Exécuter le cmd.exe commander 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

(Merci Jimbo, votre répondre était bon mais pas bref!)


10
2017-10-16 12:16



Je regrette de n'avoir qu'un seul vote à donner. C'est en effet concis. Merci. - user26398
C'est une approche idéale - Greenspark


Quelqu'un nommé Shawn Keene a fourni un Solution à cela dans le forum Windows 7 sur le site Web de Microsoft. Il se trouve dans une fonctionnalité appelée Network Place.

  1. Ouvrez l'Explorateur Windows.

  2. Cliquez avec le bouton droit sur l'entrée Ordinateur dans le volet gauche et sélectionnez "Ajouter un emplacement réseau". Cliquez sur Suivant.

  3. Sélectionnez l'option "Choisir un emplacement réseau personnalisé" (c'était le seul qui m'est présenté) et cliquez sur Suivant.

  4. Tapez le chemin UNC souhaité et cliquez deux fois sur Suivant. Cela ajoute une entrée qui apparaît dans le volet gauche de Windows Explorer sous le mappé   lecteurs, mais cela fonctionne comme un lecteur mappé et montre de cette façon dans   la boîte de dialogue Enregistrer des applications.

  5. Dans l'explorateur Windows, naviguez dans cette entrée jusqu'au sous-répertoire souhaité et cliquez dans la zone vide à droite du pain.   le chemin des miettes s’affiche en haut de l’écran de Windows Explorer et le   Le chemin UNC apparaît et est mis en évidence.


5
2018-02-17 12:04



Si vous allez citer une autre source, pourriez-vous également vous connecter à cette source? - DMA57361
À l'origine de ce post - la source W7 n'était pas spécifiée ici: countrykeepers.com/wp/?p=3017 - Mark
Hé, merci pour le tapotement. Je sais que c'est ce que je voulais dire par "je pourrais simplement mettre en place des emplacements réseau mappés au lieu des lecteurs mappés" dans la question - c'est que beaucoup d'entre eux viennent à moi département, et je voudrais pouvoir les relier. Mais c'est certainement une solution possible à certains problèmes! - Ernest Mueller
P.S. Je voterais votre réponse, mais pas assez de représentant, alors "virtuel +1!" - Ernest Mueller