題 從Windows資源管理器複製映射驅動器上的路徑的UNC網絡路徑(不是驅動器號)


我經常想通過電子郵件或聊天與我團隊中的其他人共享Windows網絡路徑到文件。我們在這裡有很多映射驅動器,我們自己設置的驅動器和我們的IT管理員設置的驅動器。我希望能夠做的是從Windows資源管理器中復製完整的真實路徑(而不是驅動器號)以發送給人們。

示例:我的“Q:”驅動器中有一個文件,\\ cartman \ users \ emueller,我想將其中的文件foo.doc鏈接發送給同事。當我複製文件路徑(shift +右鍵單擊,“copy as path”)時,它會在剪貼板中獲取文件名“Q:\ foo.doc”。這對其他人來說是無益的,他們需要看到\\ cartman \ users \ emueller \ foo.doc才能使用該鏈接。

在資源管理器中它清楚地知道完整路徑 - 在地址欄中我看到“計算機 - > emueller(\\ cartman \ users)(Q :) - >”。有沒有辦法說“嘿,男人把這條路徑複製成文本,用\\ cartman \ users \ emueller而不是Q:在裡面?”

我知道我可以設置映射的網絡位置,而不是我為個人設置的映射驅動器,並避免這個問題,但大多數映射驅動器,如“用戶”共享來自我們的企業IT策略,不能被覆蓋。我可以創建一個單獨的網絡位置,然後忽略我的Q:驅動器,但這很不方便(他們這樣做,以便他們可以跨服務器移動帳戶)。當然,我的電子郵件路徑可能最終會中斷,因為我正在丟失驅動器號的間接,但這對我來說沒問題。


77
2018-02-11 15:29


起源


如果您在無法安裝任何第三方應用程序和/或訪問註冊表的鎖定企業環境中運行,那麼此解決方案將起作用... superuser.com/a/704374/46099 - Richard


答案:


我有完全相同的問題 - 不是每個人都有與我相同的映射驅動器,或映射到相同的字母。

經過多次搜索後,我發現了一個名為的上下文菜單 路徑複製副本 在GitHub上(https://pathcopycopy.github.io/)這是一個類似的舊版擴展(稱為Pathcopy)的擴展版本,有很多選項可以將路徑複製為文本,包括一個用於UNC路徑的選項 - 可用選項的示例如下所示:

Path Copy Context Menu example

您還可以選擇在基本上下文菜單中僅顯示一行或兩行,例如,您可以有兩行,複製長路徑和復制長UNC路徑。它非常適合通過電子郵件發送給您公司中有權訪問網絡路徑的用戶,如果他們擁有與您相同的網絡映射,您可以選擇前者,否則您可以使用後者。

更新:從版本12.0開始,上述站點上提供了一個新的“便攜式”安裝程序,該安裝程序僅為當前用戶安裝到 AppData\Local 夾。我沒試過這個,但它可以解決那些被禁止正常安裝的人。


41
2017-08-24 23:20



有點亂,我更喜歡 淨使用 正如Jimbo所說。 - Jonas Byström


也許還有很長的路要走但是打開一個cmd窗口。 然後做 net use > filename

然後打開文件名,您就可以獲得路徑:
例如:

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

開盤 drives.txt

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

可以復制 \\server\c\prog\net 從文件中供您使用。

希望這可以幫助。


47
2018-04-19 17:19



簡單易行。本主題中的所有其他解決方案都非常龐大...... - radistao
或者,只需跳過“> drives.txt”並直接從終端窗口復制輸出的路徑。 - DarenW
簡單易用。贏得。 - CAD bloke
隨著msysgit / bash觸手可及,這比其他解決方案容易得多。盛大! - Jonas Byström


更新:  CoolCool的方法 比我的更容易。提出他的回答。


35
2017-07-26 21:41



我沒有看到描述的東西。 - DarenW
哪部分你看不到?你能創建超鏈接嗎?你知道如何編輯鏈接嗎? - kmote
在步驟3.如果您鍵入一個字符並將其刪除,它將更新“要顯示的文本”,這比複製/粘貼更容易。 - 79E09796
您無需在“要顯示的文本”中鍵入字符,然後將其刪除,只需將其刪除即可。 - Bae
見Coolcol的回答 superuser.com/a/922152/190599 右鍵單擊“在此處創建快捷方式”選項以加快副本速度。 - Bae


傑夫 基本上是現貨,但更進一步,

  1. 將Windows資源管理器中的文件夾右鍵拖放到新電子郵件的正文中,
  2. 然後選擇 '在這裡創建超鏈接'

23
2018-06-01 08:49



最快,最開箱即用 - Alex
應該是最佳答案,因為問題主要出現在公司環境中,您無法自己安裝軟件。 - berezovskyi
這需要與kmote的答案合併 superuser.com/a/454119/190599 因為兩者在一起非常快 - Bae


我只是需要OP提出同樣的問題,在Google上搜索並閱讀答案後,沒有一個提供我認為OP和我正在尋找的東西。

這裡的問題是可以將網絡共享映射到 Drive Y 而組織中的其他人可能具有相同的網絡共享映射 Drive X;因此,發送鏈接,如 Y:\mydirectory 可能不適合除我以外的任何人。

正如OP解釋的那樣,資源管理器確實顯示了資源管理器欄中的實際路徑,但您無法複製它(輸入很繁瑣且容易出錯,所以這不是一個選項)即使您選擇 copy as path 從上下文菜單:

enter image description here

因此,我提出的解決方案(通過複製其他人的代碼)是一個小C#程序,您可以從資源管理器中的上下文菜單調用,並允許您將映射的驅動器號轉換為實際 UNC path

這是代碼:

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

這就是 Pathing 類定義(我會嘗試找到實際的源代碼,因為我不記得我在哪裡找到它):

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

您構建程序並將可執行文件放在PC中的某個位置,例如,在 c:\Utils

現在,在Explorer中添加上下文菜單選項,如下所示:

註冊表編輯器 然後:

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"

你完成了。現在,當您從映射驅動器右鍵單擊目錄時,您將看到此選項:

enter image description here

注意

我可以提供可執行文件,因此您不必自己編譯。請在這裡給我留言。


17
2017-08-24 20:23



如果您將可執行文件壓縮並放入像Dropbox這樣的公共空間,那將會很不錯 上市 文件夾並在此處提供了鏈接。 =) - ADTC
很多工作,我更喜歡 淨使用 正如Jimbo所說。 - Jonas Byström
@JonasByström但最終結果與OP的問題一樣好。因此,即使我不會親自使用它,“很多工作”正是獲得這個答案的結果 - sehe
@sehe如果“確實如此”,如果他添加更多步驟,可能會涉及諾頓防病毒並使用錘子在鍵盤上打字,他會更受歡迎。大概。有人投票贊成 莎拉佩林。所以呢?虛弱的人做他們所做的事,但不能證明這一點。 “建設性批評”我認為上述內容被稱為。 - Jonas Byström


跑過 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

(謝謝​​Jimbo,你的 回答 很好但不簡短!)


11
2017-10-16 12:16



我很遺憾我只有一個贊成。這確實很簡潔。謝謝。 - user26398
這是一種理想的方法 - Ryan B.


名叫肖恩基恩的人提供了一個  在微軟網站上的Windows 7論壇中。它位於名為Network Place的功能中。

  1. 打開Windows資源管理器

  2. 右鍵單擊左窗格中的“計算機”條目,然後選擇“添加網絡位置”。點擊下一步。

  3. 選擇“選擇自定義網絡位置”選項(這是唯一呈現給我的選項),然後單擊“下一步”。

  4. 鍵入所需的UNC路徑,然後單擊“下一步”兩次。這會在映射下方的Windows資源管理器的左窗格中添加一個條目   驅動器,但它就像一個映射驅動器,並以這種方式顯示   應用程序的保存對話框。

  5. 在Windows資源管理器中,將該條目導航到所需的子目錄,然後單擊麵包右側的空白區域   crumbs路徑顯示在Windows資源管理器屏幕的頂部和   UNC路徑出現並突出顯示。


5
2018-02-17 12:04



如果您要引用另一個來源,請將鏈接到該來源嗎? - DMA57361
最初來自這篇文章 - W7來源沒有在那裡指定: countrykeepers.com/wp/?p=3017 - Mark
嘿,謝謝你的報導。我知道這個,這就是我所說的“我可以在問題中設置映射的網絡位置而不是映射的驅動器” - 這是他們中的許多人來找我作為映射驅動器禮貌我的IT部門,我希望能夠鏈接這些。但這絕對是解決某些問題的可能方案! - Ernest Mueller
附:我推薦你的回答,但沒有足夠的代表,所以“虛擬+1!” - Ernest Mueller


  1. 打開文件夾。
  2. 右鍵將文件從文件夾拖到Microsoft Word中。

4
2017-11-13 15:35





保持 轉移 向下並右鍵單擊該文件,然後選擇“複製為路徑”。在電子郵件中插入超鏈接並粘貼在超鏈接對話框的地址字段中。

在電子郵件中創建超鏈接後,您就完成了。

該鏈接將顯示映射的驅動器號,這是真的。當收件人點擊電子郵件中的鏈接時,無論用戶是否已映射,它都將遵循UNC路徑。

我在其他Office 2010應用程序,Excel,Power Point和Word中嘗試過此操作。


3
2017-10-02 19:04



這是有效的,但它的答案是一樣的 kmote的答案 - davidmneedham


您也可以右鍵單擊計算機目錄視圖中的目錄名稱,然後選擇重命名。這將使您可以復制路徑。


2
2017-09-28 13:42