Copiez le chemin réseau UNC (pas la lettre du lecteur) pour les chemins des lecteurs mappés à partir de l'Explorateur Windows


87

Je souhaite fréquemment partager les chemins d'accès réseau Windows des fichiers avec d'autres membres de mon équipe par courrier électronique ou chat. Nous avons beaucoup de lecteurs mappés ici, à la fois ceux que nous avons configurés nous-mêmes et ceux mis en place par nos seigneurs informatiques. Ce que j'aimerais pouvoir faire, c'est copier le chemin d'accès réel complet (et non la lettre du lecteur) à partir de l'Explorateur Windows pour l'envoyer aux gens.

Exemple: J'ai un fichier dans le lecteur "Q:", \\ cartman \ users \ emueller, et je souhaite envoyer un lien vers le fichier foo.doc à vos collègues. Lorsque je copie le chemin du fichier (Maj + clic droit, "Copier comme chemin"), le nom de fichier "Q: \ foo.doc" apparaît dans le presse-papiers. Cela n’est d'aucune utilité pour les autres utilisateurs qui auraient besoin de consulter \\ cartman \ users \ emueller \ foo.doc pour pouvoir utiliser le lien.

Dans Explorer, il connaît clairement le chemin complet - dans la barre d'adresse, je vois "Ordinateur -> emueller (\\ cartman \ utilisateurs) (Q :) ->". Existe-t-il un moyen de dire "hé homme, copie ce chemin sous forme de texte avec \\ cartman \ users \ emueller 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 comme le partage "utilisateurs" proviennent de notre stratégie informatique d'entreprise et ne peuvent pas être annulé. Je pourrais simplement créer un emplacement réseau distinct, puis ignorer mon lecteur Q:, mais cela n’est pas pratique (et ils le font pour pouvoir déplacer des comptes d’un serveur à l’autre). Bien sûr, mon chemin de courrier électronique pourrait éventuellement casser parce que je perds la lettre de lecteur, mais ce n'est pas grave.


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

Réponses:


46

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

Après de nombreuses recherches, j'ai trouvé une extension de menu contextuel appelée Path Copy Copy sur GitHub ( https://pathcopycopy.github.io/ ), qui est une version étendue d'une extension plus ancienne et similaire (appelée Pathcopy) qui propose de nombreuses options pour la copie de chemins. sous forme de texte, y compris un pour les chemins UNC - des exemples des options disponibles sont présentés ci-dessous:

Exemple de menu contextuel de copie de chemin

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

Mise à jour : à partir de la version 12.0, un nouveau programme d'installation "portable" est disponible sur le site ci-dessus. Il ne s'installe que pour l'utilisateur actuel dans le AppData\Localdossier. Je n'ai pas essayé cela, mais cela pourrait être une solution pour ceux à qui il est interdit d'installer normalement.


4
Un peu brouillon, je préfère de loin l’utilisation Internet, comme le suggère Jimbo.
Jonas Byström

49

Peut-être un long chemin, mais ouvrez une fenêtre cmd. Alors faisnet 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\netdu fichier pour votre usage.

J'espère que cela t'aides.


10
simple et facile. Toutes les autres solutions sur le sujet sont très volumineuses ...
2013 à 8h21

9
Vous pouvez également ignorer le fichier "> drives.txt" et copier le chemin généré directement à partir de la fenêtre du terminal.
DarenW

1
Simple et facile Gagner.
CAD bloke

Avec msysgit / bash au bout des doigts, c'est beaucoup plus simple que les autres solutions. Grandiose!
Jonas Byström

2
net use > filename m'a confondu .. et j'ai utilisé mon nom de fichier pdf actuel à cet endroit, ainsi mon fichier pdf original s'est écrasé. oui je sais que c'est mon mauvais. alors prenez soin de vous. il suffit d'utiliser net useet de copier depuis la fenêtre du terminal. et si vous en avez vraiment besoin dans un fichier .. alors vous savez quoi faire .. `> uncpathnamefile.txt '
ihightower

39

MISE À JOUR: L'approche de CoolCol est encore plus simple que la mienne. Upvote cette réponse.

Voici la solution que j'utilise lors de l'envoi de chemins réseau mappés via Outlook:

  1. Dans l'Explorateur Windows, maintenez le shiftbouton enfoncé, cliquez de nouveau sur le fichier, puis sélectionnez " Copier en tant que chemin ".
  2. Insérez un lien hypertexte dans l'email 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 affiche la lettre du lecteur mappé en tant que racine ( Q:\foo.doc).
  3. Maintenant, cliquez avec le bouton droit de la souris et sélectionnez " Modifier le lien hypertexte ... ", vous remarquerez que le champ Adresse a été traduit dans le chemin UNC complet ( \\cartman\users\emueller\foo.doc). Avec votre souris dans le champ Adresse, appuyez sur ctrl-Aet ctrl-Cpour copier le chemin complet dans votre presse-papiers, puis déplacez le curseur vers le champ supérieur ("Texte à afficher:") ctrl-Aet appuyez sur ctrl-Vpour l'afficher correctement dans votre courrier électronique.

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 éditer le lien?
kmote

3
À 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

1
Consultez la réponse de Coolcol, superuser.com/a/922152/190599, pour accélérer la copie en cliquant avec le bouton droit de la souris sur "Créer un raccourci ici".
Bae

30

Geoff était à la base, mais pour aller un peu plus loin,

  1. DROITE-DRAGER le dossier de l'explorateur Windows dans le corps de votre nouvel email,
  2. puis sélectionnez "Créer un lien hypertexte ici" .

1
plus rapide et plus hors de la boîte - est
Alex

3
Devrait être la meilleure solution car le problème apparaît principalement dans l'environnement d'entreprise et vous ne pouvez pas installer le logiciel vous-même.
berezovskyi

Cela doit être fusionné avec la réponse de kmote superuser.com/a/454119/190599 car les deux ensemble sont super rapides
Bae

20

J'ai juste eu le besoin de la même chose que l'OP demande et après avoir cherché sur Google et lu les réponses, aucune d'elles n'a fourni ce que je pense que l'OP et moi recherchons.

Le problème ici est qu’il est possible de mapper un partage réseau Drive Yalors qu’une autre personne de l’organisation peut avoir le même partage réseau mappé que Drive X; Par conséquent, l'envoi d'un lien tel que Y:\mydirectoryne peut pas fonctionner pour quelqu'un d'autre, sauf moi.

Comme l'explique l'OP, Explorer montre le chemin d'accès réel dans la barre de l'Explorateur, mais vous ne pouvez pas le copier (la frappe est fastidieuse et source d'erreurs, donc ce n'est pas une option) même si vous choisissez copy as pathdans le menu contextuel:

entrez la description de l'image ici

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 Explorer et qui vous permettra de traduire la lettre de lecteur mappé en réel 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 Pathingdéfinition de la classe (je vais essayer de trouver la source réelle car je ne me souviens plus où je l'ai trouvée):

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 Explorer de la manière suivante:

Regedit et ensuite:

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é. Vous verrez maintenant cette option lorsque vous cliquez avec le bouton droit sur un répertoire à partir d'un lecteur mappé:

entrez la description de l'image ici

Remarque

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


1
Ce sera bien si vous aviez compressé le fichier exécutable et placé dans un espace public comme le dossier Dropbox Public et fourni un lien ici. =)
ADTC

3
Beaucoup de travail, je préfère de loin l’utilisation nette comme suggéré par Jimbo.
Jonas Byström

@ JonasByström Mais le résultat final est aussi beau que possible pour la question du PO. Alors que « beaucoup de travail » est précisément ce que gagne cette réponse la upvote, même si je ne l' utiliser personnellement
sehe

12

Exécutez la cmd.execommande 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, ta réponse était bonne mais pas brève!)


2
Je regrette de n'avoir qu'un seul vote positif à donner. C'est en effet concis. Merci.
user26398

1
C'est une approche idéale
Ryan B.

5

Shawn Keene, une personne nommée, a fourni une solution à cela dans le forum Windows 7 sur le site Web de Microsoft. C'est dans une fonctionnalité appelée Network Place.

  1. Ouvrez l'explorateur Windows.

  2. Cliquez avec le bouton droit de la souris sur l'entrée Ordinateur dans le volet de 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'a été 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 l'Explorateur Windows sous les lecteurs mappés, mais fonctionne comme un lecteur mappé et s'affiche ainsi dans la boîte de dialogue Enregistrer des applications.

  5. Dans l'Explorateur Windows, naviguez à travers cette entrée jusqu'au sous-répertoire souhaité et cliquez dans la zone vide à droite du chemin de la chapelure en haut de l'écran de l'Explorateur Windows. Le chemin UNC apparaît et est mis en surbrillance.


1
si vous citez une autre source, pouvez-vous également créer un lien vers 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 de me faire entendre. Je sais à ce sujet, c'est ce que je voulais dire par "je pourrais simplement configurer des emplacements de réseau mappés au lieu des lecteurs mappés" dans la question. ministère, et je voudrais pouvoir relier ceux-ci. Mais c'est certainement une solution possible à certains problèmes!
Ernest Mueller

PS je voterais votre réponse, mais pas assez de représentants, donc "virtuel +1!"
Ernest Mueller

4
  1. Ouvrez le dossier.
  2. DROITE, faites glisser un fichier du dossier dans Microsoft Word.

3

Maintenez Shiftenfoncé et faites un clic droit sur le fichier et sélectionnez "Copier comme chemin". Insérez un lien hypertexte dans l'email et collez-le dans le champ d'adresse de la boîte de dialogue Lien hypertexte.

Après avoir créé le lien hypertexte dans l'e-mail, vous avez terminé.

Le lien montrera la lettre de lecteur mappée que c'est vrai. Lorsque le ou les destinataires cliquent sur le lien dans l'e-mail, il suit le chemin UNC, que l'utilisateur soit mappé ou non.

J'ai essayé cela dans d'autres applications Office 2010, Excel, Power Point et Word.


Cela fonctionne, mais c'est la même réponse que la réponse de
kmote

2

Vous pouvez également cliquer avec le bouton droit sur le nom du répertoire dans la vue Annuaire de l'ordinateur et sélectionner Renommer. Cela vous donnera accès à copier le chemin.


1
  1. Dans la fenêtre de l'explorateur, cliquez avec le bouton droit sur le lecteur mappé dans l'arborescence de fichiers à gauche.
  2. Sélectionnez Renommer.
  3. Lorsque le texte est en surbrillance, cliquez avec le bouton droit de la souris sur> Copier.
  4. Le chemin est maintenant copié (avec du texte supplémentaire qui est facilement supprimé après avoir été copié dans un nouvel emplacement.

1
Notez que le vrai chemin n'apparaît pas toujours là, comme en témoigne le fait que vous pouvez le renommer.
Ben N

1

Enregistrez ceci dans votre dossier sendto, le mien est C:\Documents and Settings\xxxxID\SendTo avec un nom comme Copy UNC Filepath.vbs (doit se terminer .vbs). Maintenant, lorsque vous cliquez avec le bouton droit sur un dossier ou un fichier, il copie l’UNC dans le presse-papiers. Notre dossier personnel est le lecteur F et il ne convertit donc pas 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

De Andrew Kelly : @Colkerr, j'ai essayé d'utiliser votre "Copier UNC Filepath.vbs" mais une erreur de compilation VBScript s'est produite sur le caractère de la ligne 2 54 "Fin de déclaration attendue"
Luke canadien

Ce code ne fonctionne pas. Je regarderais plutôt superuser.com/a/704374/46099 si vous êtes dans un environnement d'entreprise verrouillé.
Richard

Pour trouver le dossier d'envoi, tapez ceci dans la barre d'emplacement de l'explorateur de fichiers: shell: sendto Le script a bien fonctionné pour moi. source: dummies.com/computers/operating-systems/windows-7/…
David Lotts

0

Dans les réseaux d'entreprise, la plupart des services informatiques créent des partages à l'aide d'espaces de noms DFS. Dans Partages DFS, vous pouvez cliquer avec le bouton droit de la souris sur un dossier et trouver sa cible.

L'autre méthode serait de voir si le partage est publié dans Active Directory. Le moyen le plus simple pour les autres utilisateurs de rechercher des partages sans connaître le chemin UNC ou le nom / chemin du serveur de fichiers.

Si vous partagez des documents avec un grand nombre d'utilisateurs, quelque chose comme Microsoft SharePoint peut être une meilleure solution car il offre une interface Web (avec un accès de type WebDAV pour UNC) et des outils intégrés pour alerter les autres utilisateurs des documents.

J'espère que cela t'aides.


1
Lorsque je fais un clic droit sur mes dossiers, je ne vois pas d'option "trouver une cible". Que voulez-vous dire exactement? Je veux dire, je peux voir le vrai chemin, ce n'est pas un mystère, je veux juste pouvoir le couper et le coller et pas le taper. Quant à Sharepoint, 50 000 dollars en logiciels ne sont pas ma réponse idéale à "mais je ne peux pas simplement couper et coller un chemin ..."
Ernest Mueller

0

Créez un fichier de commandes DOS comme celui showmappeddrives.batqui contient:

@echo off    
net use
pause

Placez le fichier sur votre bureau si vous le souhaitez.
Double-cliquez dessus et il affichera tous vos lecteurs mappés.


Si vous ajoutez une explication sur la façon d'utiliser ceci, votre réponse sera alors une copie de la réponse de Jimbo d'il y a deux ans et demi.
G-Man

0

Cliquez avec le bouton droit de la souris sur le dossier> Partager> "partager avec vous (cela ne signifie rien). Vous obtiendrez le chemin. / Ou \. Ou cliquez sur Afficher tout le réseau partagé."


0

Solution simple alternative:

Si vous démappez le lecteur en tant que lettre de lecteur, ajoutez-le à nouveau en tant qu '"emplacement réseau" (cliquez avec le bouton droit de la souris sur "Ordinateur" dans la fenêtre de l'explorateur et sélectionnez "Ajouter un emplacement réseau"). Tapez le chemin d'accès complet au dossier. . À l'avenir, le chemin complet sera affiché dans la barre d'adresse. Toutefois, les applications dépendant du lecteur sous forme de lettre peuvent échouer.

En parcourant les réponses ci-dessus, je ne pense pas avoir vu la solution simple ci-dessus que j'ai obtenue auprès de: https://answers.microsoft.com/en-us/windows/forum/windows_7-files/how-can-i-display -le-chemin-complet-de-chemin-de-un-sous / ebfd4253-8016-4cbd-b0d6-1bbeae9189f9


-2

SHIFT + RightClick "Copier en tant que chemin" copiera le lecteur + nom de fichier (par exemple, R: \ test.doc) ou, si vous consultez le fichier via UNCpath, le nom de fichier UNCpath + nom (par exemple, "\ nas \ Documents \ test.doc ")

C’est le comportement «standard» de Windows, et donc mon préféré, surtout les plugins d’explorateur qui ralentissent les systèmes ....;)


1
Cela n'aide pas à résoudre mon problème.
Ernest Mueller
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.