Windows エクスプローラからマップされたドライブ上のパスのUNCネットワークパス(ドライブ文字ではなく)をコピーします

copy-paste mapped-drive unc windows-7 windows-explorer

私は頻繁に電子メールやチャットを介してチームの他の人とファイルへのWindowsネットワークパスを共有したいと思っています。私たちはここにたくさんのマップされたドライブを持っています, 私たちは自分自身をセットアップするものと私たちのITの大将によって設定されたものの両方.私ができるようにしたいのは、Windowsエクスプローラから実際のフルパス(ドライブ文字ではなく)をコピーして、人々に送信することです

例。私の “Q: “ドライブにファイルがあるんだけど、その中のファイルfoo.docへのリンクを同僚に送りたいんだ。ファイルのパスをコピーすると (shift+right click, “copy as path”)、クリップボードにファイル名 “Q:\foo.doc” が表示されます。これは他の人にとっては役に立たないことで、リンクを消費するためには「\cartman\users\emueller\foo.doc」を見る必要があります

エクスプローラーでは、明らかにフルパスを知っているんだけど、アドレスバーに「Computer -> emueller (Q:) ->」って書いてある。”hey man copy that path with the Q: not the Q: in it in the Q: at the Q: in it? “って言う方法はないの?

個人的に設定したドライブのためにマップされたドライブの代わりにマップされたネットワークロケーションを設定すれば、この問題を回避できることはわかっているのですが、「ユーザー」共有のようなマップされたドライブのほとんどは、会社のITポリシーから来ており、上書きすることはできません。別のネットワークロケーションを作成して、Q: ドライブを無視することもできますが、それは不便です(そして、彼らはサーバー間でアカウントを移動することができるようにするためにそれを行う)。確かに私の電子メールのパスは、私がドライブの文字の間接性を失っているので、最終的には壊れてしまうかもしれませんが、私はそれで構いません

  97  Ernest Mueller  2011-02-11


ベストアンサー

私も全く同じ問題を抱えていました。誰もが私と同じマップされたドライブを持っているわけではなく、同じ文字にマップされているわけでもありませんでした

これは似たような古い拡張機能 (Pathcopy と呼ばれる) の拡張版で、UNC パスを含むパスをテキストとしてコピーするためのいくつかのオプションを持っています — 利用可能なオプションの例を以下に示します

Path Copy Context Menu example

また、ベースのコンテキストメニューに1行だけを表示するか2行だけを表示するかを選択することもでき、例えば、「Copy Long Path」と「Copy Long UNC Path」の2行を表示することができます。これは、ネットワークパスへのアクセス権を持っている会社のユーザーにメールを送るのに最適で、彼らがあなたと同じネットワークマッピングを持っている場合は、前者を選択することができ、そうでない場合は後者を使用することができます

更新:バージョン12.0現在、上記サイトでは、現在のユーザーのみがAppData\Localフォルダにインストールする「ポータブル」なインストーラが新たに公開されています。私は試していませんが、通常のインストールが禁止されている方の解決策になるかもしれません

52  i_saw_drones  2012-08-24


迂回するには長いかもしれませんが、cmdウィンドウを開きます。そして、任意のフォルダでnet useコマンドを入力してください。すると、以下のようにマッピングされたフォルダがすべて返されます(例としてのみ表示)

P:\XX\XX>net use
New connections will be remembered.

Status       Local     Remote                Network
-------------------------------------------------------------------------------
OK           N:        \\server01\Test1      Microsoft Windows Network
OK           P:        \\server02\Test1      Microsoft Windows Network
OK                     \\10.8.5.99\NOTEBOOK  Microsoft Windows Network
OK                     \\10.8.5.99\tmp       Microsoft Windows Network

必要であれば、上記の出力を P:\XX\XX>net use > drives.txt のようなファイルに送ることができます。そして、そのファイルを開いてください。drives.txt を開き、そのファイルからパスをコピーして使用することができます

コマンドラインウィンドウ自体からコピーすることもできます

これが助けになることを願っています

54  Jimbo  2012-04-19


UPDATE: CoolColのアプローチは私よりもさらに簡単です。その答えをUpvoteしてください

39  community wiki  None


Geoffは、基本的にはスポットであったが、さらに一歩踏み込んで、それを取るために

  1. Windows エクスプローラーからフォルダを右ドラッグして、新しい電子メールの本文に入れます
  2. を選択し、「ここにハイパーリンクを作成」を選択します

37  Coolcol  2015-06-01


私はちょうどOPが尋ねているのと同じものの必要性を持っていたし、Googleで検索して答えを読んだ後、それらのどれも私がOPと私が探していると思うものを提供していませんでした

ここでの問題は、ある人がネットワーク共有をDrive Yにマップしているのに対して、組織内の誰かが同じネットワーク共有をDrive Xにマップしている可能性があるということです

OPが説明しているように、エクスプローラは実際のパスをエクスプローラバーに表示しますが、コンテキストメニューからcopy as pathを選択してもコピーすることはできません(入力が面倒でエラーになりやすいので、これはオプションではありません)

enter image description here

そこで、(他の人のコードをコピーして)思いついた解決策は、エクスプローラのコンテキストメニューから呼び出すことができ、マップされたドライブレターを実際のUNC pathに変換することができる、ちょっとしたC#プログラムでした

これがコードだ

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に置いておきます

これで、エクスプローラにコンテキストメニューのオプションが追加されました

再編集してから

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

注釈

実行ファイルを提供できるので、自分でコンパイルする必要はありません。ここにメモを書いてください

21  Icarus  2012-08-24


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さんのアンサーは良かったが、簡潔ではなかった!)

13  Jonas Byström  2013-10-16


Shawn Keene という名前の人が、マイクロソフトのウェブサイトの Windows 7 フォーラムで 解決策 を提供してくれました。それは Network Place と呼ばれる機能の中にあります

  1. Windowsエクスプローラを開きます

  2. 左ペインの[コンピュータ]エントリを右クリックし、[ネットワークの場所の追加]を選択します。次へ」をクリックします

  3. カスタムネットワークの場所を選択する」オプションを選択し(私に提示されたのはそれだけでした)、「次へ」をクリックします

  4. 希望するUNCパスを入力し、次へを2回クリックします。これにより、Windowsエクスプローラの左ペインにマップされたドライブの下に表示されるエントリが追加されますが、マップされたドライブと同じように動作し、アプリケーションの保存ダイアログにそのように表示されます

  5. Windowsエクスプローラで、そのエントリから目的のサブディレクトリに移動し、Windowsエクスプローラ画面の上部にあるパンくずのパス表示の右側の空白領域をクリックすると、UNCパスが表示され、ハイライト表示されます

5  Mark  2011-02-17


  1. フォルダを開きます
  2. 右のフォルダからMicrosoft Wordにファイルをドラッグします

5  Geoff  2014-11-13


Shiftを押しながら右クリックして「パスとしてコピー」を選択します。メールにハイパーリンクを挿入し、ハイパーリンクダイアログボックスのアドレス欄に貼り付けます

メール内にハイパーリンクを作成したら完了です

リンクはマップされたドライブレターを表示します。受信者が電子メールのリンクをクリックすると、ユーザーがマップされているかどうかに関わらず、UNCパスに従います

他のOffice 2010のアプリケーション、Excel、Power Point、Wordで試してみました

3  keNscale  2013-10-02


また、コンピュータのディレクトリビューでディレクトリ名を右クリックして、名前の変更を選択することもできます。これにより、パスをコピーするためのアクセス権が与えられます

2  Craig  2012-09-28


  1. エクスプローラウィンドウで、左側のファイルツリーでマップされたドライブを右クリックします
  2. Select Rename.
  3. テキストがハイライトされている状態で、右クリック->コピー
  4. これでパスがコピーされました(新しい場所にコピーした後に簡単に削除されるいくつかの余分なテキストが含まれています)

1  ThomB  2016-02-03


これをsendtoフォルダに保存してください。私のはC:\Documents and Settings\xxxxID\SendToCopy UNC Filepath.vbsのような名前で保存されています。私たちの個人的なフォルダは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  Colkerr  2013-10-16


企業ネットワークでは、ほとんどのIT部門がDFSネームスペースを使用して共有を作成しています。DFS Sharesでは、フォルダを右クリックしてターゲットを見つけることができます

もう一つの方法は、その共有がActive Directoryに公開されているかどうかを確認することです。UNCパスやファイルサーバー名/パスを知らなくても、他のユーザーがシェアを見つけることができる最も簡単な方法です

多数のユーザーと文書を共有している場合, Microsoft SharePointのようなものは、Webインターフェイスを提供していますので、より良いソリューションかもしれません (UNCスタイルのアクセスのためのWebDAVと) と他のユーザーに文書を警告するためのツールが組み込まれています

これが助けになることを願っています

0  dmd83  2011-02-12


showmappeddrives.batのようなDOSバッチファイルを作成します

@echo off
net use
pause

お好きな場合は、デスクトップ上にファイルを置いてください。 それをダブルクリックすると、マップされたすべてのドライブが表示されます

0  ThePrince  2014-10-09


フォルダを右クリックします > 共有 > ” 自分自身に共有(何の意味もありません) 。/ .または、show all network sharedをクリックしてください

0  aabbcc  2016-11-24


代替のシンプルなソリューション

ドライブをドライブ文字としてマッピングを解除し、代わりに「ネットワーク上の場所」として追加した場合(エクスプローラウィンドウの「コンピュータ」を右クリックして「ネットワーク上の場所の追加」を選択)、フォルダのフルパスを入力します。先に進むと、アドレスバーにフルパスが表示されます。ただし、ドライブを文字として依存するアプリケーションは失敗する可能性があります

https://answers.microsoft.com/en-us/windows/forum/windows_7-files/how-can-i-display-the-full-unc-path-of-a-sub/ebfd4253-8016-4cbd-b0d6-1bbeae9189f9:上記の回答を見て、私は私がから得た上記の簡単な解決策を見たとは思わない

0  Aiju  2018-04-20


SHIFT + RightClick 「Copy as path」は、ドライブ+ファイル名(すなわち、R:\test.doc)をコピーするか、または、UNCpath経由でファイルを見ている場合は、UNCpath+ファイル名(すなわち、「\nasDocuments\test.doc」)をコピーする

これはWindowsの「標準的な」動作であり、したがって、私のお気に入りであり、システムを遅くするすべてのエクスプローラのプラグインの上に…. 😉

-2  Luuk  2015-02-21


タイトルとURLをコピーしました