web-dev-qa-db-fra.com

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

Je souhaite fréquemment partager des chemins d'accès réseau de fichiers Windows 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.

82
Ernest Mueller

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, je trouvai une extension de menu contextuel nommée Path Copy Copy sur GitHub ( https://pathcopycopy.github.io/ ), qui est une version étendue d’une extension plus ancienne similaire (appelée Pathcopy) offre de nombreuses options pour copier les chemins en texte, y compris une pour les chemins UNC - un exemple des options disponibles est présenté ci-dessous:

Path Copy Context Menu example

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 e-mails 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.

Update : À 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 dossier AppData\Local. Je n'ai pas essayé cela, mais cela pourrait être une solution pour ceux à qui il est interdit d'installer normalement.

42
i_saw_drones

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

J'espère que cela t'aides.

47
Jimbo

PDATE:l'approche de CoolCool est encore plus facile que le mien. Upvote sa 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 la touche enfoncée. shift bouton enfoncé, clic de souris sur le fichier et sélectionnez " Copier comme chemin ".
  2. Insérez un lien hypertexte dans l'e-mail et collez-le dans le champ d'adresse de la boîte de dialogue Lien hypertexte. (Raccourci: ctrl-Kctrl-V + OK). À ce stade, le lien affiche la lettre de lecteur mapped en tant que racine (Q:\foo.doc).
  3. Maintenant, r-click et sélectionnez " Modifier le lien hypertexte ... " vous remarquerez que le champ Adresse a été traduit en arrière 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, puis déplacez le curseur dans le champ du haut ("Texte à afficher:") ctrl-A et ctrl-V pour l'afficher correctement dans votre email.
37
kmote

Geoff était fondamentalement sur place, 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' .
24
Coolcol

J'avais juste 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 sur Drive Y alors que quelqu'un d'autre dans l'organisation peut avoir le même partage réseau mappé en tant que Drive X; par conséquent, l'envoi d'un lien tel que Y:\mydirectory risque de ne pas fonctionner pour quelqu'un d'autre à part 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 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 Explorer et qui vous permettra de traduire la lettre de lecteur mappé en 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 définition de la classe Pathing (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 puis:

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é:

enter image description here

Remarque

19
Icarus

Exécutez la commande cmd.exeNet 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éponse était bon mais pas bref!)

11
Jonas Byström

Un certain Shawn Keene 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 dans 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.

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

Tenir Shift Cliquez avec le bouton droit de la souris sur le fichier et sélectionnez "Copier comme chemin". Insérez un lien hypertexte dans l'e-mail 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.

3
keNscale

Vous pouvez également cliquer avec le bouton droit de la souris 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.

2
Craig
  1. Dans la fenêtre de l'explorateur, cliquez avec le bouton droit de la souris 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. Maintenant, le chemin est copié (avec du texte supplémentaire qui est facilement supprimé après avoir été copié dans un nouvel emplacement.
1
ThomB

Enregistrez ceci dans votre dossier sendto, le mien est dans 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 de la souris 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
1
Colkerr

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
aabbcc

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 trouver 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.

0
dmd83

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-the-full-unc-chemin-d'un-sous/ebfd4253-8016-4cbd-b0d6-1bbeae9189f9

0
Aiju

Créez un fichier de commandes DOS comme showmappeddrives.bat qui contient:

@echo off    
Net Use
pause

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

0
ThePrince