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.
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:
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.
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.
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:
Q:\foo.doc
).\\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.Geoff était fondamentalement sur place, mais pour aller un peu plus loin,
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:
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é:
Exécutez la commande 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
(Merci Jimbo, votre réponse était bon mais pas bref!)
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.
Ouvrez l'explorateur Windows.
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.
Sélectionnez l'option «Choisir un emplacement réseau personnalisé» (c'était le seul qui m'a été présenté) et cliquez sur Suivant.
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.
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.
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.
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.
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
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é.".
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.
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
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.