Kopieren Sie den UNC-Netzwerkpfad (nicht den Laufwerksbuchstaben) für Pfade auf zugeordneten Laufwerken aus dem Windows Explorer


87

Ich möchte häufig Windows-Netzwerkpfade zu Dateien per E-Mail oder Chat mit anderen Mitarbeitern meines Teams teilen. Wir haben hier viele zugeordnete Laufwerke, sowohl die, die wir selbst eingerichtet haben, als auch die, die von unseren IT-Verantwortlichen eingerichtet wurden. Ich möchte in der Lage sein, den vollständigen Pfad (nicht den Laufwerksbuchstaben) aus dem Windows Explorer zu kopieren, um ihn an andere zu senden.

Beispiel: Ich habe eine Datei in meinem Laufwerk "Q:", \\ cartman \ users \ emueller, und ich möchte einen Link zu der darin enthaltenen Datei foo.doc an Kollegen senden. Wenn ich den Dateipfad kopiere (Umschalt + Rechtsklick, "Als Pfad kopieren"), erhält er den Dateinamen "Q: \ foo.doc" in der Zwischenablage. Dies ist nicht hilfreich für andere, die \\ cartman \ users \ emueller \ foo.doc sehen müssen, um den Link nutzen zu können.

Im Explorer kennt es eindeutig den vollständigen Pfad - in der Adressleiste sehe ich "Computer -> emueller (\\ cartman \ users) (Q :) ->". Gibt es eine Möglichkeit zu sagen "Hey Mann, kopiere diesen Pfad als Text mit dem \\ cartman \ users \ emueller, nicht dem Q: darin?"

Ich weiß, dass ich nur zugeordnete Netzwerkspeicherorte anstelle der zugeordneten Laufwerke für diejenigen einrichten kann, die ich persönlich eingerichtet habe, und um dieses Problem zu vermeiden, aber die meisten zugeordneten Laufwerke wie die "Benutzer" -Freigabe stammen aus unserer Unternehmens-IT-Richtlinie und können dies nicht überschrieben werden. Ich könnte einfach einen separaten Netzwerkspeicherort einrichten und dann mein Q: -Laufwerk ignorieren, aber das ist unpraktisch (und sie tun dies, damit sie Konten zwischen Servern verschieben können). Sicher, mein per E-Mail versendeter Pfad könnte irgendwann unterbrochen werden, da ich die Umleitung des Laufwerksbuchstabens verliere, aber das ist in Ordnung für mich.


1
Wenn Sie in einer gesperrten Unternehmensumgebung arbeiten, in der Sie keine Anwendungen von Drittanbietern installieren und / oder nicht auf die Registrierung zugreifen können, funktioniert diese Lösung ... superuser.com/a/704374/46099
Richard

Antworten:


46

Ich hatte genau das gleiche Problem - nicht jeder hatte die gleichen zugeordneten Laufwerke wie ich oder die gleichen Buchstaben zugeordnet.

Nach langem Suchen habe ich auf GitHub ( https://pathcopycopy.github.io/ ) eine Kontextmenü-Erweiterung namens Path Copy Copy gefunden, die eine erweiterte Version einer ähnlichen älteren Erweiterung (Pathcopy) ist und einige Optionen zum Kopieren von Pfaden bietet als Text, einschließlich eines für UNC-Pfade - Beispiele für die verfügbaren Optionen sind nachstehend aufgeführt:

Beispiel für ein Pfadkopie-Kontextmenü

Sie können auch festlegen, dass im Basiskontextmenü nur eine oder zwei Zeilen angezeigt werden. Sie können beispielsweise zwei Zeilen haben: Langen Pfad kopieren und Langen UNC-Pfad kopieren. Diese Funktion eignet sich hervorragend zum E-Mail-Senden von Benutzern in Ihrem Unternehmen, die Zugriff auf einen Netzwerkpfad haben. Wenn sie dieselbe Netzwerkzuordnung haben wie Sie, können Sie die erstere auswählen, andernfalls können Sie die letztere verwenden.

Update : Ab Version 12.0 ist auf der obigen Site ein neues "portables" Installationsprogramm verfügbar, das nur für den aktuellen Benutzer in den AppData\LocalOrdner installiert wird . Ich habe dies nicht ausprobiert, aber es könnte eine Lösung für diejenigen sein, denen die normale Installation untersagt ist.


4
Ein bisschen chaotisch, ich bevorzuge die von Jimbo vorgeschlagene Netznutzung .
Jonas Byström

49

Vielleicht weit herum, aber öffne ein cmd-Fenster. Dann machnet use > filename

Öffnen Sie dann den Dateinamen und Sie können den Pfad erhalten:
Bsp .:

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

Öffnung drives.txt

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

Kann \\server\c\prog\netaus der Datei für Ihren Gebrauch kopieren .

Hoffe das hilft.


10
simpel und einfach. Alle anderen Lösungen in diesem Thema sind sehr
umfangreich

8
Oder überspringen Sie einfach die Datei "> drives.txt" und kopieren Sie den ausgegebenen Pfad direkt aus dem Terminalfenster.
DarenW

1
Einfach und leicht. Sieg.
CAD Kerl

Mit msysgit / bash an Ihren Fingerspitzen ist dies viel einfacher als die anderen Lösungen. Grand!
Jonas Byström

1
net use > filename verwirrt mich .. und ich habe meinen tatsächlichen PDF-Dateinamen an dieser Stelle verwendet, wodurch meine ursprüngliche PDF-Datei verstopft ist. Ja, ich weiß, es ist mein schlechtes. Also pass auf dich auf. benutze net useund kopiere einfach aus dem Terminalfenster. und wenn du es wirklich in einer Datei brauchst .. dann weißt du was zu tun ist .. `> uncpathnamefile.txt '
ihightower

38

UPDATE: CoolCols Ansatz ist noch einfacher als meiner. Stimmen Sie dieser Antwort zu.

Hier ist die Problemumgehung, die ich beim Senden von Pfaden für zugeordnete Netzwerke über Outlook verwende:

  1. Halten Sie im Windows Explorer die shiftTaste gedrückt, klicken Sie erneut auf die Datei und wählen Sie " Als Pfad kopieren ".
  2. Fügen Sie einen Hyperlink in die E-Mail ein und fügen Sie ihn in das Adressfeld des Dialogfelds Hyperlink ein. (Verknüpfung: ctrl-K ctrl-V+ OK). Zu diesem Zeitpunkt zeigt der Link den zugeordneten Laufwerksbuchstaben als root ( Q:\foo.doc) an.
  3. Nun r Sie auf und wählen Sie „ Hyperlink bearbeiten ... “ Sie werden feststellen , dass das Adressfeld wieder in den vollständigen UNC - Pfad übersetzt wurde ( \\cartman\users\emueller\foo.doc). Mit der Maus in das Adressfeld ein , drücken ctrl-Aund ctrl-Cden vollständigen Pfad in die Zwischenablage zu kopieren, dann den Cursor auf das Feld oben bewegen ( „Text - to - Anzeige:“) getroffen ctrl-Aund ctrl-Ves in Ihrer E - Mail korrekt anzuzeigen.

Ich sehe die beschriebenen Dinge nicht.
DarenW

Welchen Teil kannst du nicht sehen? Können Sie den Hyperlink erstellen? Wissen Sie, wie Sie den Link bearbeiten können?
kmote

3
Wenn Sie in Schritt 3 ein Zeichen eingeben und löschen, wird der anzuzeigende Text aktualisiert. Dies ist einfacher als Kopieren / Einfügen.
79E09796

Sie müssen kein Zeichen in das Feld "Anzuzeigender Text" eingeben und es dann löschen. Löschen Sie es einfach.
Bae

1
Siehe Coolcol Antwort superuser.com/a/922152/190599 beschleunigen die Kopie von der rechten Maustaste „Verknüpfung erstellen Here“ Option.
Bae

29

Geoff war im Grunde genau richtig, aber um noch einen Schritt weiter zu gehen,

  1. Ziehen Sie den Ordner mit der rechten Maustaste aus dem Windows Explorer in den Text Ihrer neuen E-Mail.
  2. Wählen Sie dann "Hyperlink hier erstellen" .

1
am schnellsten und schnellsten
Alex

3
Sollte die beste Antwort sein, da das Problem hauptsächlich im Unternehmensumfeld auftritt und Sie dort keine Software installieren können.
Berezovskyi

Dies muss mit kmote Antwort verschmolzen in superuser.com/a/454119/190599 als die beiden zusammen super schnell sind
Bae

19

Ich hatte gerade das Bedürfnis nach dem gleichen, was OP fragt, und nachdem ich bei Google gesucht und die Antworten gelesen hatte, lieferte keiner von ihnen das, wonach ich denke, dass das OP und ich suchen.

Das Problem hierbei ist, dass eine Netzwerkfreigabe zugeordnet werden kann, Drive Ywährend einer anderen Person in der Organisation möglicherweise dieselbe Netzwerkfreigabe zugeordnet ist wie Drive X. Aus diesem Grund Y:\mydirectoryfunktioniert das Senden eines Links möglicherweise nur für mich.

Wie im OP erläutert, zeigt der Explorer den tatsächlichen Pfad in der Explorer-Leiste an, Sie können ihn jedoch nicht kopieren (das Eingeben ist mühsam und fehleranfällig, daher ist dies keine Option), auch wenn Sie copy as pathim Kontextmenü Folgendes auswählen :

Bildbeschreibung hier eingeben

Die Lösung, die ich (durch Kopieren des Codes einer anderen Person) gefunden habe, war ein kleines C # -Programm, das Sie über ein Kontextmenü im Explorer aufrufen können und mit dem Sie den zugeordneten Laufwerksbuchstaben in den tatsächlichen übersetzen können UNC path.

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

Und hier ist die PathingKlassendefinition (ich werde versuchen, die eigentliche Quelle zu finden, da ich mich nicht erinnern kann, wo ich sie gefunden habe):

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

Sie erstellen das Programm und speichern die ausführbare Datei irgendwo auf Ihrem PC, zum Beispiel in c:\Utils

Nun fügen Sie im Explorer eine Kontextmenüoption wie folgt hinzu:

Regedit und dann:

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"

Du bist fertig. Jetzt wird diese Option angezeigt, wenn Sie mit der rechten Maustaste auf ein Verzeichnis von einem zugeordneten Laufwerk klicken:

Bildbeschreibung hier eingeben

Hinweis

Ich kann die ausführbare Datei bereitstellen, damit Sie die Kompilierung nicht selbst vornehmen müssen. Schreiben Sie mir einfach hier eine Nachricht.


1
Schön, wenn Sie die ausführbare Datei gezippt und in einen öffentlichen Bereich wie Dropbox Public gestellt und hier einen Link angegeben haben. =)
ADTC

3
Viel Arbeit, ich bevorzuge die von Jimbo vorgeschlagene Netznutzung .
Jonas Byström

@ JonasByström Aber das Endergebnis ist so schön wie es nur geht für die Frage des OP. Genau diese "Menge Arbeit" verdient diese Antwort, obwohl ich sie nicht persönlich nutzen werde
siehe

12

Führen Sie den cmd.exeBefehl aus 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

(Danke Jimbo, deine Antwort war gut, aber nicht kurz!)


2
Ich bedaure, dass ich nur eine Stimme zu vergeben habe. Dies ist in der Tat prägnant. Vielen Dank.
user26398

1
Dies ist ein idealer Ansatz
Ryan B.

5

Jemand namens Shawn Keene hat im Windows 7-Forum auf der Microsoft-Website eine Lösung dafür bereitgestellt . Es befindet sich in einer Funktion namens Network Place.

  1. Öffnen Sie den Windows Explorer.

  2. Klicken Sie mit der rechten Maustaste auf den Eintrag Computer im linken Bereich und wählen Sie "Netzwerkspeicherort hinzufügen". Weiter klicken.

  3. Wählen Sie die Option "Benutzerdefinierten Netzwerkspeicherort auswählen" (dies war der einzige, der mir angezeigt wurde) und klicken Sie auf "Weiter".

  4. Geben Sie den gewünschten UNC-Pfad ein und klicken Sie zweimal auf Weiter. Dies fügt einen Eintrag hinzu, der im linken Bereich des Windows-Explorers unter den zugeordneten Laufwerken angezeigt wird. Er funktioniert jedoch genauso wie ein zugeordnetes Laufwerk und wird auf diese Weise im Dialogfeld "Speichern" von Anwendungen angezeigt.

  5. Navigieren Sie in Windows Explorer durch diesen Eintrag zum gewünschten Unterverzeichnis und klicken Sie in den leeren Bereich rechts neben der Anzeige des Brotkrumenpfads oben im Windows Explorer-Bildschirm. Der UNC-Pfad wird angezeigt und hervorgehoben.


1
Wenn Sie eine andere Quelle zitieren möchten, können Sie auch auf diese Quelle verlinken?
DMA57361

Ursprünglich aus diesem Beitrag - die W7-Quelle wurde dort nicht angegeben: countrykeepers.com/wp/?p=3017
Mark

Hey, danke, dass Sie sich eingeschalten haben. Ich weiß, dass dies das ist, was ich in der Frage unter "Ich konnte nur zugeordnete Netzwerkstandorte anstelle der zugeordneten Laufwerke einrichten" verstanden habe Abteilung, und ich möchte in der Lage sein, diese zu verknüpfen. Aber das ist definitiv eine mögliche Lösung für einige Probleme!
Ernest Mueller

PS Ich würde deine Antwort abstimmen, aber nicht genug Wiederholungen, also "virtuelle +1!"
Ernest Mueller

4
  1. Öffnen Sie den Ordner.
  2. RECHTS eine Datei aus dem Ordner in Microsoft Word ziehen.

3

Halten Sie Shiftdie Maustaste gedrückt und wählen Sie "Als Pfad kopieren". Fügen Sie einen Hyperlink in die E-Mail ein und fügen Sie ihn in das Adressfeld des Dialogfelds Hyperlink ein.

Nachdem Sie den Hyperlink in der E-Mail erstellt haben, sind Sie fertig.

Der Link zeigt den zugeordneten Laufwerksbuchstaben. Dies ist wahr. Wenn der Empfänger auf den Link in der E-Mail klickt, folgt er dem UNC-Pfad, unabhängig davon, ob der Benutzer zugeordnet ist oder nicht.

Ich habe dies in anderen Office 2010-Anwendungen, Excel, Power Point und Word versucht.


Dies funktioniert, aber es ist die gleiche Antwort wie die Antwort von
kmote

2

Sie können auch mit der rechten Maustaste auf den Verzeichnisnamen in der Computerverzeichnisansicht klicken und Umbenennen auswählen. Auf diese Weise können Sie den Pfad kopieren.


1
  1. Klicken Sie im Explorer-Fenster mit der rechten Maustaste auf das zugeordnete Laufwerk im Dateibaum auf der linken Seite.
  2. Wählen Sie Umbenennen.
  3. Während der Text markiert ist, klicken Sie mit der rechten Maustaste auf "Kopieren".
  4. Jetzt wird der Pfad kopiert (mit zusätzlichem Text, der nach dem Kopieren an einen neuen Speicherort leicht gelöscht werden kann.

1
Beachten Sie, dass der wahre Pfad dort nicht immer angezeigt wird. Dies zeigt sich daran, dass Sie ihn umbenennen können.
Ben N

1

Speichern Sie dies in Ihrem sendto-Ordner, meins hat C:\Documents and Settings\xxxxID\SendTo einen Namen wie Copy UNC Filepath.vbs (muss mit .vbs enden). Wenn Sie nun mit der rechten Maustaste auf einen Ordner oder eine Datei klicken, wird die UNC in die Zwischenablage kopiert. Unser persönlicher Ordner ist das F-Laufwerk und konvertiert weder C: noch 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

Von Andrew Kelly : @Colkerr, ich habe versucht, "Copy UNC Filepath.vbs" zu verwenden, aber ich erhalte einen VBScript-Kompilierungsfehler in Zeile 2, Zeichen 54 "Expected end of statement"
Canadian Luke,

Dieser Code funktioniert nicht. Ich würde stattdessen auf superuser.com/a/704374/46099 schauen, wenn Sie sich in einer gesperrten Unternehmensumgebung befinden.
Richard

Geben Sie Folgendes in die Adressleiste des Datei-Explorers ein, um den Ordner "Senden an" zu finden: shell: sendto Das Skript hat bei mir einwandfrei funktioniert. Quelle: dummies.com/computers/operating-systems/windows-7/…
David Lotts

0

In Unternehmensnetzwerken erstellen die meisten IT-Abteilungen Freigaben mithilfe von DFS-Namensräumen. Innerhalb von DFS-Freigaben können Sie mit der rechten Maustaste auf einen Ordner klicken und sein Ziel finden.

Die andere Methode wäre zu sehen, ob die Freigabe in Active Directory veröffentlicht ist. Die einfachste Möglichkeit für andere Benutzer, Freigaben zu finden, ohne den UNC-Pfad oder den Namen / Pfad des Dateiservers zu kennen.

Wenn Sie Dokumente für eine große Anzahl von Benutzern freigeben, ist Microsoft SharePoint möglicherweise die bessere Lösung, da es eine Webschnittstelle (mit WebDAV für UNC-Zugriff) und integrierte Tools bietet, um andere Benutzer auf Dokumente aufmerksam zu machen.

Hoffe das hilft.


1
Wenn ich mit der rechten Maustaste auf meine Ordner klicke, wird die Option "Ziel suchen" nicht angezeigt. Was genau meinen Sie damit? Ich meine, ich kann den wirklichen Weg sehen, es ist kein Rätsel, ich möchte nur in der Lage sein, ihn zu durchschneiden und zu überwinden und nicht zu tippen. Was Sharepoint angeht, sind 50.000 USD Software nicht meine ideale Antwort auf "Kann ich nicht einfach einen Pfad ausschneiden und einfügen ..."
Ernest Mueller,

0

Erstellen Sie eine DOS-Batchdatei, die Folgendes showmappeddrives.batenthält:

@echo off    
net use
pause

Platzieren Sie die Datei auf Ihrem Desktop, wenn Sie möchten.
Doppelklicken Sie darauf und es werden alle zugeordneten Laufwerke angezeigt.


Wenn Sie eine Erklärung dazu hinzufügen, wäre Ihre Antwort ein Duplikat der Antwort von Jimbo vor zweieinhalb Jahren.
G-Man

0

Klicken Sie mit der rechten Maustaste auf den Ordner> Freigeben> "Für sich selbst freigeben (bedeutet nichts). Sie erhalten den Pfad. / Oder \. Oder klicken Sie auf Alle freigegebenen Netzwerke anzeigen.


0

Alternative einfache Lösung:

Wenn Sie die Zuordnung des Laufwerks als Laufwerksbuchstabe aufheben, fügen Sie es stattdessen erneut als "Netzwerkspeicherort" hinzu (dh klicken Sie im Explorer-Fenster mit der rechten Maustaste auf "Computer" und wählen Sie "Netzwerkspeicherort hinzufügen"). Geben Sie den vollständigen Pfad für den Ordner ein . Wenn Sie fortfahren, wird der vollständige Pfad in der Adressleiste angezeigt. Anwendungen, die vom Laufwerk als Buchstabe abhängen, können jedoch fehlschlagen.

Wenn ich mir die obigen Antworten ansehe, glaube ich nicht, dass ich die einfache Lösung gesehen habe, die ich von folgender Seite erhalten habe: https://answers.microsoft.com/en-us/windows/forum/windows_7-files/how-can-i-display -die-vollständige-nicht-Pfad-von-einem-Unter / ebfd4253-8016-4cbd-b0d6-1bbeae9189f9


-2

Mit UMSCHALT + Rechtsklick auf "Als Pfad kopieren" wird das Laufwerk + Dateiname (dh R: \ test.doc) kopiert, oder wenn Sie die Datei über UNCpath betrachten, wird der UNCpath + Dateiname (dh "\ nas \ Documents \ test.doc") kopiert ")

Dies ist das 'Standard'-Verhalten von Windows und daher mein Favorit, vor allem Explorer-Plugins, die Systeme verlangsamen ....;)


1
Dies hilft nicht, mein Problem zu lösen.
Ernest Mueller
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.