Copia percorso di rete UNC (non lettera di unità) per percorsi su unità mappate da Esplora risorse


87

Spesso desidero condividere i percorsi di rete di Windows con i file del mio team tramite e-mail o chat. Abbiamo un sacco di unità mappate qui, sia quelle che abbiamo impostato noi stessi sia quelle impostate dai nostri signori IT. Quello che mi piacerebbe poter fare è copiare l'intero percorso reale (non la lettera di unità) da Esplora risorse per inviarlo alla gente.

Esempio: ho un file nel mio disco "Q:", \\ cartman \ users \ emueller e desidero inviare un link al file foo.doc in esso contenuto ai colleghi. Quando copio il percorso del file (MAIUSC + tasto destro, "copia come percorso"), negli appunti viene visualizzato il nome del file "Q: \ foo.doc". Questo non è utile per gli altri, che dovrebbero vedere \\ cartman \ users \ emueller \ foo.doc per poter utilizzare il collegamento.

In Explorer conosce chiaramente il percorso completo - nella barra degli indirizzi vedo "Computer -> emueller (\\ cartman \ users) (Q :) ->". C'è un modo per dire "hey man copia quel percorso come testo con il \\ cartman \ users \ emueller non il Q: in esso?"

So che potrei semplicemente impostare percorsi di rete mappati anziché le unità mappate per quelle che ho impostato personalmente ed evitare questo problema, ma la maggior parte delle unità mappate come la condivisione "utenti" provengono dalla nostra politica IT aziendale e non possono essere ignorato. Potrei semplicemente creare un percorso di rete separato e quindi ignorare il mio disco Q: ma questo è scomodo (e lo fanno in modo da poter spostare gli account tra i server). Sicuramente il mio percorso via e-mail potrebbe eventualmente interrompersi perché sto perdendo la lettera di unità indiretta ma va bene per me.


1
Se si esegue in un ambiente aziendale bloccato in cui non è possibile installare applicazioni di terzi e / o accedere al registro, questa soluzione funzionerà ... superuser.com/a/704374/46099
Richard

Risposte:


46

Ho avuto esattamente lo stesso problema: non tutti avevano le stesse unità mappate come me o mappate sulle stesse lettere.

Dopo molte ricerche, ho trovato un'estensione del menu di scelta rapida denominata Copia copia su GitHub ( https://pathcopycopy.github.io/ ) che è una versione estesa di un'estensione simile e precedente (chiamata Pathcopy) ha alcune opzioni per copiare i percorsi come testo, incluso uno per i percorsi UNC - di seguito è mostrato un esempio delle opzioni disponibili:

Esempio di menu contestuale Copia percorso

Puoi anche scegliere di mostrare solo una o due linee nel menu contestuale di base, ad esempio puoi avere due linee, Copia percorso lungo e Copia percorso UNC lungo. È ottimo per inviare e-mail agli utenti della tua azienda che hanno accesso a un percorso di rete e, se hanno la stessa mappatura della tua rete, puoi scegliere il primo, altrimenti puoi usare il secondo.

Aggiornamento : dalla versione 12.0, un nuovo programma di installazione "portatile" è disponibile sul sito sopra, che viene installato solo per l'utente corrente nella AppData\Localcartella. Non ho provato questo, ma potrebbe essere una soluzione per coloro a cui è vietata l'installazione normale.


4
Un po 'disordinato, preferisco di gran lunga l'uso della rete come suggerito da Jimbo.
Jonas Byström,

49

Forse molto lontano ma apri una finestra cmd. Quindi fanet use > filename

Quindi apri il nome del file e puoi ottenere il percorso:
Es:

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

Può copiare \\server\c\prog\netdal file per il tuo uso.

Spero che sia di aiuto.


10
semplice e facile. Tutte le altre soluzioni sull'argomento sono molto voluminose ...
Radistao,

8
Oppure, basta saltare "> drives.txt" e copiare il percorso emesso direttamente dalla finestra del terminale.
DarenW,

1
Semplice e facile. Vincere.
Bloke CAD,

Con msysgit / bash a portata di mano è molto più semplice rispetto alle altre soluzioni. Mille dollari!
Jonas Byström,

1
net use > filename mi ha confuso .. e ho usato il mio vero nome file pdf in quel punto così ho bloccato il mio file pdf originale. si lo so che è un male. per cui riguardati. basta usare net usee copiare dalla finestra del terminale. e se ne hai davvero bisogno all'interno di un file .. allora sai cosa fare .. `> uncpathnamefile.txt '
ihightower

38

AGGIORNAMENTO: l'approccio di CoolCol è persino più semplice del mio. Valorizza quella risposta.

Ecco la soluzione alternativa che utilizzo quando invio percorsi di rete mappata tramite Outlook:

  1. In Esplora risorse, tieni premuto il shiftpulsante, fai nuovamente clic sul file e seleziona " Copia come percorso ".
  2. Inserire un collegamento ipertestuale nell'e-mail e incollarlo nel campo dell'indirizzo della finestra di dialogo Collegamento ipertestuale. (Collegamento: ctrl-K ctrl-V+ OK). A questo punto, il collegamento visualizzerà la lettera di unità mappata come root ( Q:\foo.doc).
  3. Ora, fai nuovamente clic e seleziona " Modifica collegamento ipertestuale ... " noterai che il campo Indirizzo è stato tradotto nuovamente nel percorso UNC completo ( \\cartman\users\emueller\foo.doc). Con il mouse nel campo Indirizzo, premi ctrl-Ae ctrl-Cper copiare il percorso completo negli Appunti, quindi sposta il cursore sul campo superiore ("Testo da visualizzare:") ctrl-Ae ctrl-Vper visualizzarlo correttamente nella tua e-mail.

Non vedo le cose descritte.
DarenW,

quale parte non vedi? Puoi creare il collegamento ipertestuale? Sai come modificare il link?
kmote

3
Nel passaggio 3. se digiti un carattere e lo elimini, aggiornerà il "Testo da visualizzare", che è più semplice di copia / incolla.
79E09796,

Non è necessario digitare un carattere nel "Testo da visualizzare" e quindi eliminarlo, basta eliminarlo.
Bae

1
Vedere la risposta di Coolcol superuser.com/a/922152/190599 per velocizzare la copia facendo clic con il pulsante destro del mouse sull'opzione "Crea collegamento qui".
Bae

29

Geoff era praticamente perfetto, ma per fare un ulteriore passo avanti,

  1. DESTRA-DRAG la cartella da Esplora risorse, nel corpo della nuova e-mail,
  2. quindi seleziona "Crea collegamento ipertestuale qui" .

1
il più veloce e fuori dal comune
Alex

3
Dovrebbe essere la risposta migliore poiché il problema si presenta principalmente nell'ambiente aziendale e non è possibile installare software lì da soli.
berezovskyi,

Questo deve essere unito alla risposta di kmote superuser.com/a/454119/190599 poiché i due insieme sono super veloci
Bae

19

Avevo solo bisogno della stessa cosa che OP sta chiedendo e dopo aver cercato su Google e aver letto le risposte, nessuno di loro ha fornito ciò che penso che OP e io stiamo cercando.

Il problema qui è che si può mappare una condivisione di rete Drive Ymentre qualcun altro nell'organizzazione può avere la stessa condivisione di rete mappata come Drive X; pertanto, l'invio di un collegamento come Y:\mydirectorypotrebbe non funzionare per nessun altro tranne me.

Come spiega l'OP, Explorer mostra il percorso effettivo nella barra di Explorer, ma non è possibile copiarlo (la digitazione è noiosa e soggetta a errori, quindi questa non è un'opzione) anche se si sceglie copy as pathdal menu di scelta rapida:

inserisci qui la descrizione dell'immagine

Quindi la soluzione che mi è venuta in mente (copiando il codice di qualcun altro) era un piccolo programma C # che puoi chiamare da un menu di scelta rapida in Explorer e ti permetterà di tradurre la lettera di unità mappata nell'attuale UNC path.

Ecco il codice:

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

Ed ecco la Pathingdefinizione della classe (cercherò di trovare la fonte reale in quanto non ricordo dove l'ho trovata):

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

Costruisci il programma e metti l'eseguibile da qualche parte nel tuo PC, per esempio, in c:\Utils

Ora aggiungi un'opzione del menu di scelta rapida in Explorer in questo modo:

Regedit e quindi:

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"

Hai fatto. Ora vedrai questa opzione quando fai clic con il pulsante destro del mouse su una directory da un'unità mappata:

inserisci qui la descrizione dell'immagine

Nota

Posso fornire l'eseguibile in modo che tu non debba fare la compilazione da solo. Mandami semplicemente una nota qui.


1
Sarà bello se hai compresso il file eseguibile e messo in uno spazio pubblico come la cartella pubblica di Dropbox e fornito un link qui. =)
ADTC,

3
Molto lavoro, preferisco di gran lunga l'uso della rete come suggerito da Jimbo.
Jonas Byström,

@ JonasByström Ma il risultato finale è bello come lo è per la domanda del PO. Quindi "tanto lavoro" è proprio ciò che guadagna questa risposta al voto, anche se non lo userò personalmente
vedi il

12

Esegui il 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

(Grazie Jimbo, la tua risposta è stata buona ma non breve!)


2
Mi dispiace di avere un solo voto da dare. Questo è davvero conciso. Grazie.
user26398

1
Questo è un approccio ideale
Ryan B.

5

Qualcuno di nome Shawn Keene ha fornito una soluzione al problema nel forum di Windows 7 sul sito Web Microsoft. È in una funzione chiamata Network Place.

  1. Apri Esplora risorse.

  2. Fare clic con il tasto destro del mouse sulla voce Computer nel riquadro a sinistra e selezionare "Aggiungi un percorso di rete". Fai clic su Avanti.

  3. Seleziona l'opzione "Scegli un percorso di rete personalizzato" (era l'unico presentato a me) e fai clic su Avanti.

  4. Digitare il percorso UNC desiderato e fare clic su Avanti due volte. Questo aggiunge una voce che appare nel riquadro sinistro di Windows Explorer sotto le unità mappate, ma funziona proprio come un'unità mappata e si presenta in quel modo nella finestra di dialogo Salva delle applicazioni.

  5. In Esplora risorse, navigare attraverso quella voce nella sottodirectory desiderata e fare clic nell'area vuota a destra della visualizzazione del percorso delle briciole di pane nella parte superiore della schermata di Esplora risorse e il percorso UNC appare e viene evidenziato.


1
se hai intenzione di citare un'altra fonte potresti collegarti anche a quella fonte?
DMA57361,

Originariamente da questo post - la fonte W7 non è stata specificata qui: countrykeepers.com/wp/?p=3017
Mark

Ehi, grazie per avermi contattato. Lo so, questo è ciò che intendevo con "Potrei semplicemente impostare percorsi di rete mappati anziché unità mappate" nella domanda - è che molti di loro vengono da me come unità mappate per gentile concessione del mio IT dipartimento, e vorrei essere in grado di collegarli. Ma questa è sicuramente una possibile soluzione ad alcuni dei problemi!
Ernest Mueller,

PS Vorrei votare la tua risposta, ma non abbastanza rappresentante, quindi "+1 virtuale!"
Ernest Mueller,

4
  1. Apri la cartella.
  2. DESTRA trascina un file dalla cartella in Microsoft Word.

3

Tenere Shiftpremuto e fare clic con il tasto destro del mouse sul file e selezionare "Copia come percorso". Inserire un collegamento ipertestuale nell'e-mail e incollarlo nel campo dell'indirizzo della finestra di dialogo Collegamento ipertestuale.

Dopo aver creato il collegamento ipertestuale nell'e-mail, il gioco è fatto.

Il collegamento mostrerà la lettera di unità mappata che è vera. Quando il / i destinatario / i fa clic sul collegamento nell'e-mail, seguirà il percorso UNC indipendentemente dal fatto che l'utente sia mappato o meno.

Ho provato questo in altre applicazioni di Office 2010, Excel, Power Point e Word.


Funziona, ma è la stessa risposta della risposta di
kmote

2

È inoltre possibile fare clic con il pulsante destro del mouse sul nome della directory nella vista della directory del computer e selezionare Rinomina. Questo ti darà accesso per copiare il percorso.


1
  1. Nella finestra di Explorer, fai clic con il pulsante destro del mouse sull'unità mappata nella struttura dei file a sinistra.
  2. Seleziona Rinomina.
  3. Mentre il testo è evidenziato, fai clic con il pulsante destro del mouse-> copia.
  4. Ora il percorso viene copiato (con del testo aggiuntivo che può essere facilmente eliminato dopo essere stato copiato in una nuova posizione.

1
Nota che il percorso vero non appare sempre lì, come dimostra il fatto che puoi rinominarlo.
Ben N,

1

Salva questo nella tua cartella sendto, il mio è dentro C:\Documents and Settings\xxxxID\SendTo con un nome come Copy UNC Filepath.vbs (deve terminare .vbs) Ora quando fai clic destro su una cartella o file copierà l'UNC negli appunti. La nostra cartella personale è l'unità F e quindi non converte né C: né 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

Da Andrew Kelly : @Colkerr, ho provato a usare il tuo "Copia UNC Filepath.vbs" ma ricevo un errore di compilazione VBScript sul carattere di riga 2 54 "Fine prevista dell'istruzione"
Canadian Luke,

Questo codice non funziona. Vorrei guardare superuser.com/a/704374/46099 invece se siete in un ambiente aziendale bloccato.
Richard,

Per trovare la cartella send to, digita questo nella barra degli indirizzi di Esplora file: shell: sendto Lo script ha funzionato bene per me. fonte: dummies.com/computers/operating-systems/windows-7/…
David Lotts,

0

Nelle reti aziendali la maggior parte dei dipartimenti IT crea condivisioni utilizzando gli spazi dei nomi DFS, all'interno delle condivisioni DFS è possibile fare clic con il pulsante destro del mouse su una cartella e trovarne il target.

L'altro metodo sarebbe vedere se la condivisione è pubblicata in Active Directory. Il modo più semplice per gli altri utenti di trovare condivisioni senza conoscere il percorso UNC o il nome / percorso del file server.

Se condividi documenti con un gran numero di utenti, qualcosa come Microsoft SharePoint potrebbe essere una soluzione migliore in quanto offre un'interfaccia Web (con WebDAV per l'accesso in stile UNC) e offre strumenti integrati per avvisare gli altri utenti dei documenti.

Spero che sia di aiuto.


1
Quando faccio clic con il pulsante destro del mouse sulle mie cartelle non vedo l'opzione "trova destinazione": cosa intendi esattamente? Voglio dire, posso vedere il vero percorso, non è un mistero, voglio solo essere in grado di tagliarlo e incollarlo e non digitare. Per quanto riguarda Sharepoint, $ 50.000 nel software non sono la mia risposta ideale a "ma non posso semplicemente tagliare e incollare un percorso ..."
Ernest Mueller,

0

Crea un file batch DOS come quello showmappeddrives.batche contiene:

@echo off    
net use
pause

Posiziona il file sul desktop, se lo desideri.
Fare doppio clic su di esso e mostrerà tutte le unità mappate.


Se hai aggiunto una spiegazione su come utilizzarlo, la tua risposta sarebbe un duplicato della risposta di Jimbo di 2 anni e mezzo fa.
G-Man,

0

Fai clic con il tasto destro del mouse sulla cartella> Condividi> "condividi (non significa nulla). Otterrai il percorso. / O \. Oppure fai clic su Mostra tutta la rete condivisa.


0

Soluzione semplice alternativa:

Se si annulla la mappatura dell'unità come lettera di unità, quindi si aggiunge nuovamente come "percorso di rete" (ovvero fare clic con il pulsante destro del mouse su "Computer" nella finestra di Esplora risorse e selezionare "Aggiungi un percorso di rete") Digitare il percorso completo per la cartella . Andando avanti, verrà visualizzato il percorso completo nella barra degli indirizzi. Tuttavia, le applicazioni che dipendono dall'unità come una lettera potrebbero non riuscire.

Osservando le risposte sopra non credo di aver visto la semplice soluzione sopra la quale ho ottenuto da: https://answers.microsoft.com/en-us/windows/forum/windows_7-files/how-can-i-display -il-full-unc-path-di-un-sub / ebfd4253-8016-4cbd-b0d6-1bbeae9189f9


-2

MAIUSC + tasto destro del mouse "Copia come percorso" copierà l'unità + nome file (ad es. R: \ test.doc) o se si sta guardando il file tramite UNCpath il nome UNCpath + + (es. "\ Nas \ Documents \ test.doc ")

Questo è il comportamento 'standard' di Windows, e quindi il mio plugin preferito, soprattutto Explorer, che rallenta i sistemi ....;)


1
Questo non aiuta a risolvere il mio problema.
Ernest Mueller,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.