2011-02-11 15:29:57 +0000 2011-02-11 15:29:57 +0000
89
89
Advertisement

从 Windows Explorer

Advertisement

中复制 UNC 网络路径(而不是驱动器编号)用于映射驱动器上的路径,我经常想通过电子邮件或聊天与团队中的其他人分享文件的 Windows 网络路径。我们这里有很多映射的驱动器,有我们自己设置的,也有我们的IT大佬设置的。我希望能够做的是,从Windows资源管理器中复制完整的真实路径(而不是驱动器字母),然后发送给大家。我在我的 “Q: "驱动器里有一个文件,是foo.doc,我想把里面的文件foo.doc的链接发给同事。当我复制文件路径(shift+右键,"复制为路径")时,它在剪贴板中得到的文件名是 "Q:\foo.doc"。这对其他人来说是没有帮助的,因为他们需要看到”//foo.doc “才能够使用这个链接。 在资源管理器中,它清楚地知道完整的路径–在地址栏中我看到 "Computer -> emueller (Q:) ->"。有什么办法可以说 "嘿,伙计,把那个路径复制为文本,而不是Q:中的Q:?”

我知道我可以直接设置映射的网络位置,而不是我个人设置的映射驱动器,这样就可以避免这个问题,但是大多数映射的驱动器,比如 “用户 "共享的驱动器都是来自于我们公司的IT策略,不能被推翻。我可以直接做一个单独的网络位置,然后忽略我的Q:驱动器,但这很不方便(而且他们这样做是为了让他们可以在不同的服务器上移动账户)。当然,我的电子邮件路径可能最终会因为我失去了驱动器的字母指示而中断,但这对我来说没有问题。

Advertisement
Advertisement

答案 (17)

49
49
49
2012-04-19 17:19:19 +0000

可能绕了很远的路,但是打开一个cmd窗口。然后做net use > filename

然后打开文件名就可以得到路径: Ex:

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
47
47
2012-08-24 23:20:11 +0000

我遇到了同样的问题—-不是每个人都有和我一样的映射驱动器,或者映射到相同的字母。

经过一番搜索,我在GitHub https://pathcopycopy.github.io/ 上找到了一个名为Path Copy Copy Copy的上下文菜单扩展,它是一个类似的、较老的扩展(称为Pathcopy)的扩展版本,有很多选项可以将路径复制为文本,包括一个UNC路径的选项–下面是可用的选项示例。

你也可以选择在基本上下文菜单中只显示一行或两行,例如你可以有两行,Copy Long Path和Copy Long UNC Path。这对于给公司里有网络路径的用户发邮件是很好的,如果他们和你有相同的网络映射,你可以选择前者,否则可以使用后者。

更新*。从12.0版本开始,上面的网站上有一个新的 “便携式 "安装程序,只为当前用户安装到AppData\Local文件夹中。我没有尝试过,但对于那些禁止正常安装的用户来说,这可能是个解决办法。

39
Advertisement
39
39
2012-07-26 21:41:45 +0000
Advertisement

UPDATE:*CoolCol的方法比我的更简单。

以下是我通过Outlook发送映射的网络路径时使用的方法:

1.在Windows资源管理器中,按住shift键,r点击文件,选择 “复制为路径"。2.在邮件中插入一个超链接,在超链接对话框的地址栏中粘贴。(快捷键:ctrl-K ctrl-V + OK)。這時,連結會顯示 _mapped磁碟機代號為根目錄 (Q:\foo.doc)。现在,r点击并选择 ”编辑超链接…“,你会注意到地址字段已经被转换为完整的UNC路径(\cartman\users\emueller\foo.doc)。用鼠标在地址栏中按ctrl-A和ctrl-C键,将完整的路径复制到剪贴板上,然后将光标移到最上面的 "要显示的文字:",按ctrl-A和ctrl-V键,在邮件中正确显示。

32
32
32
2015-06-01 08:49:58 +0000

Geoff 基本上是正确的,但要更进一步,

  1. 从Windows资源管理器中向右拖动文件夹,到新邮件的正文中, 2.然后选择‘Create Hyperlink Here’*。
20
Advertisement
20
20
2012-08-24 20:23:12 +0000
Advertisement

这里的问题是,一个人可能会将网络共享映射到Drive Y,而组织中的其他人可能会将相同的网络共享映射到Drive X;因此,发送一个像Y:\mydirectory这样的链接,除了我之外,其他任何人都不一定能做到。

正如OP所解释的那样,资源管理器确实会在资源管理器栏中显示实际路径,但即使你从上下文菜单中选择copy as 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()));           
            }
        }
    }
}

这里是UNC path类的定义(我不记得在哪里找到的,所以我会试着找到实际的来源)。

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:008-02-29"
    /// might return: "\networkserver\Shares\Photos008-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;
    }
}
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"

你建立程序,然后把可执行文件放在你的电脑里,比如说,在Pathing

里,现在你在资源管理器里添加一个上下文菜单选项,这样:

Regedit,然后:

&001

你就完成了。现在,当你从映射的驱动器中右击一个目录时,你会看到这样的选项:

注意

我可以提供可执行文件,这样你就不需要自己编译了。只要在这里给我留言就可以了。

12
12
12
2013-10-16 12:16:39 +0000

运行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,你的回答很好,但不简单!)

5
Advertisement
5
5
2011-02-17 12:04:02 +0000
Advertisement

一个叫Shawn Keene的人在微软网站的Windows 7论坛上提供了一个解决方案。它是在一个名为Network Place的功能中。

1.打开Windows资源管理器。打开Windows资源管理器。

  1. 在左侧窗格中的计算机条目上点击右键,选择 “添加网络位置"。

3.选择 "选择自定义网络位置 "选项(这是唯一的一个选项),然后点击下一步。键入所需的UNC路径,然后点击两次 "下一步"。这样就会在Windows资源管理器的左侧窗格中的映射驱动器下方添加一个条目,但它的工作原理就像映射驱动器一样,在应用程序的保存对话框中也是这样显示的。

5.在Windows资源管理器中,通过该条目导航到所需的子目录,然后在Windows资源管理器屏幕上方的面包屑路径显示右侧的空白区域单击,UNC路径就会出现并高亮显示。

4
4
4
2014-11-13 15:35:34 +0000
  1. 打开文件夹。
  2. 将文件夹中的文件向右拖动到Microsoft Word中。
3
Advertisement
3
3
2013-10-02 19:04:28 +0000
Advertisement

按住Shift键,右键点击文件,选择 “复制为路径"。在邮件中插入一个超链接,然后在超链接对话框的地址栏中粘贴。

在邮件中创建超链接后,就大功告成了。当收件人点击邮件中的链接时,无论用户是否被映射,它都会遵循UNC路径。

我在其他的Office 2010应用程序中,Excel、Power Point和Word中都尝试过这样做。

2
2
2
2012-09-28 13:42:54 +0000

你也可以在计算机目录视图中右击目录名,选择重命名。这样就可以进入复制路径了。

1
1
1
2013-10-16 13:33:07 +0000

保存在你的sendto文件夹中,我的文件夹是C:\Documents and Settings\xxxxID\SendTo,名字是Copy UNC Filepath.vbs(必须以.vbs结尾),现在当你右键点击文件夹或文件时,它会将UNC复制到剪贴板上。我们的个人文件夹是F盘,所以它不会转换C: 或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
1
1
2016-02-03 19:51:46 +0000
  1. 在资源管理器窗口中,右击左侧文件树中的映射驱动器。选择 “重命名"。
  2. 当文本被高亮显示时,右键点击右键>copy.
  3. 现在路径已经被复制了(复制到新的位置后,会有一些额外的文本很容易被删除。
0
0
0
2014-10-09 22:20:56 +0000

创建一个像showmappeddrives.bat这样的DOS批处理文件,其中包含:

@echo off    
net use
pause

如果你愿意的话,将该文件放在桌面上。

0
0
0
2018-04-20 18:34:56 +0000

另一种简单的解决方案:

如果你将硬盘解映射为一个驱动器字母,然后重新添加为 “网络位置"(即在资源管理器窗口中右键单击 "计算机",选择 "添加网络位置"),输入文件夹的完整路径。继续前进,它将在地址栏中显示完整路径。但是,依赖驱动器作为字母的应用程序可能会失败。

看了上面的回复,我想我没有看到上面的简单解决方案,我从以下地址栏中得到的: [https://answers.microsoft.com/en-us/windows/forum/windows

0
0
0
2011-02-12 22:06:12 +0000

在企业网络中,大多数IT部门使用DFS名称空间创建共享,在DFS共享中,您可以右键点击文件夹并找到目标。

如果您与大量的用户共享文档,像Microsoft SharePoint这样的东西可能是一个更好的解决方案,因为它提供了一个Web界面(使用WebDAV进行UNC风格的访问),并提供了内置的工具来提醒其他用户的文档。

0
0
0
2016-11-24 06:37:36 +0000

右键点击文件夹> 分享> “分享给你自己(意味着什么都不需要)。/ 或 . 或点击显示所有网络共享.

-2
-2
-2
2015-02-21 09:33:45 +0000

SHIFT+右键 “复制为路径 "将复制驱动器+文件名(即R:\test.doc),或者如果你通过UNC路径查看文件,则复制UNC路径+文件名(即”\nas\Documents\test.doc")

这是Windows的 “标准 "行为,因此也是我最喜欢的,高于所有会拖慢系统速度的资源管理器插件……;)

Advertisement

相关问题

3
28
13
7
14
Advertisement