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


87

メールやチャットを介して、チームの他のユーザーとファイルへのWindowsネットワークパスを頻繁に共有したい。ここには多くのマップされたドライブがあります。自分でセットアップしたものと、ITの大君によってセットアップされたものの両方です。私ができるようにしたいのは、Windowsエクスプローラーから(ドライブ文字ではなく)完全な実際のパスをコピーして、ユーザーに送信することです。

例:「Q:」ドライブにファイル\\ cartman \ users \ emuellerがあり、そのファイルfoo.docへのリンクを同僚に送信したい。ファイルパスをコピー(Shift +右クリック、「パスとしてコピー」)すると、クリップボードにファイル名「Q:\ foo.doc」が表示されます。これは、リンクを使用できるようにするために\\ cartman \ users \ emueller \ foo.docを参照する必要がある他の人にとっては役に立ちません。

エクスプローラーでは、完全なパスが明確に認識されます-アドレスバーに「コンピューター-> emueller(\\ cartman \ users)(Q :)->」と表示されます。「Q:ではなく\\ cartman \ users \ emuellerでテキストとしてパスをコピーしてください」と言う方法はありますか?

個人的に設定したドライブのマップされたドライブの代わりに、マップされたネットワークの場所を設定するだけでこの問題を回避できることはわかっていますが、「ユーザー」共有などのマップされたドライブのほとんどは、企業のITポリシーに基づいており、できませんオーバーライドされます。別のネットワークロケーションを作成してからQ:ドライブを無視することもできますが、それは不便です(そして、サーバー間でアカウントを移動できるようにしています)。ドライブ文字の間接指定を失っているので、電子メールで送信されたパスが最終的に壊れる可能性がありますが、それで問題ありません。


1
あなたが任意のサードパーティのアプリケーションをインストールし、および/またはレジストリにアクセスすることはできませんロックダウンされた企業環境で実行している場合は、この解決策は...動作しますsuperuser.com/a/704374/46099
リチャード・

回答:


46

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

よく検索した結果、GitHubのPath Copy Copyという名前のコンテキストメニュー拡張(https://pathcopycopy.github.io/)が見つかりました。UNCパス用のテキストを含むテキストとして-利用可能なオプションの例を以下に示します。

パスコピーコンテキストメニューの例

また、ベースコンテキストメニューに1行または2行のみを表示するように選択することもできます。たとえば、[長いパスをコピー]と[長いUNCパスをコピー]の2行を表示できます。ネットワークパスにアクセスできる社内のユーザーにメールを送信するのに最適です。ユーザーが同じネットワークマッピングを持っている場合は前者を選択でき、そうでない場合は後者を使用できます。

更新:バージョン12.0以降、上記のサイトで新しい「ポータブル」インストーラーが利用可能になり、現在のユーザーのみがAppData\Localフォルダーにインストールされます。私はこれを試していませんが、通常のインストールが禁止されている人にとっては解決策になるかもしれません。


4
少し面倒ですが、Jimboが示唆するようにネット使用を好みます。
ジョナスビストレム

49

長い道のりかもしれないが、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使用するためにファイルからコピーできます。

お役に立てれば。


10
シンプルで簡単。トピックの他のすべてのソリューションは非常に大規模です
...- radistao

8
または、「> drives.txt」をスキップして、出力されたパスをターミナルウィンドウから直接コピーします。
-DarenW

1
シンプルで簡単。勝つ。
CADブローク

指先でmsysgit / bashを使用すると、他のソリューションよりもはるかに簡単です。グランド!
ジョナスビストレム2013年

1
net use > filename 私を混乱させた..そして、私はその場所で私の実際のpdfファイル名を使ったので、元のpdfファイルを破壊した。はい、それは私の悪いことです。気をつけて net useターミナルウィンドウから使用してコピーするだけです。ファイル内で本当に必要な場合は、どうすればよいかを知っています.. `> uncpathnamefile.txt '
ihightower

38

更新:CoolColのアプローチは私よりも簡単です。その答えに賛成票を投じてください。

Outlook経由でマップされたネットワークパスを送信するときに使用する回避策は次のとおりです。

  1. Windowsエクスプローラーで、shiftボタンを押したままファイルをrクリックして、「パスとしてコピー」を選択します。
  2. 電子メールにハイパーリンクを挿入し、ハイパーリンクダイアログボックスのアドレスフィールドに貼り付けます。(ショートカット:ctrl-K ctrl-V+ OK)。この時点で、リンクにはマップされたドライブ文字がルート(Q:\foo.doc)として表示されます。
  3. ここで、rクリックして[ ハイパーリンクの編集... ]を選択すると、[ アドレス]フィールドが完全なUNCパス(\\cartman\users\emueller\foo.doc)に変換されていることがわかります。アドレスフィールドにあなたのマウスを使って、ヒットctrl-Actrl-Cヒット:あなたのクリップボードへのフルパスをコピーし、その後、トップフィールド(「表示するテキスト」)にカーソルを移動ctrl-Aし、ctrl-Vメールで正しく表示します。

説明されているものが表示されません。
-DarenW

どの部分が見えませんか?ハイパーリンクを作成できますか?リンクを編集する方法を知っていますか?
kmote

3
手順3では、文字を入力して削除すると、「表示するテキスト」が更新されます。これはコピー/貼り付けよりも簡単です。
79E09796

「表示するテキスト」に文字を入力して削除する必要はありません。削除するだけです。

1
Coolcolの答えsuperuser.com/a/922152/190599を参照して、[ここにショートカットを作成]オプションを右クリックしてコピーを高速化します。

29

ジェフは基本的にスポットオンでしたが、それをさらに一歩進めるために、

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

1
最速かつ最もすぐに使える
アレックス

3
問題は主に企業環境で発生し、そこにソフトウェアをインストールすることはできないため、最良の答えになるはずです。
-berezovskyi

これはkmoteの回答でマージする必要superuser.com/a/454119/190599 2が一緒にスーパー迅速あるとして
ペ・

19

OPが求めているものと同じものが必要だったので、Googleで検索して回答を読んだ後、OPと私が探しているものを提供してくれませんでした。

ここでの問題はDrive Y、組織内の他の誰かが同じネットワーク共有をマップしているのに対して、ネットワーク共有をマップできることDrive Xです。したがって、などのリンクを送信しても、Y:\mydirectory私以外の人には機能しない場合があります。

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

ここに画像の説明を入力してください

(他の人のコードをコピーすることで)私が思いついた解決策は、エクスプローラーのコンテキストメニューから呼び出すことができ、マップされたドライブ文字を実際のに変換できる小さな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

次に、エクスプローラーにコンテキストメニューオプションを追加します。

Regeditその後:

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"

できました。マップされたドライブからディレクトリを右クリックすると、このオプションが表示されます。

ここに画像の説明を入力してください

注意

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


1
実行可能ファイルを圧縮し、Dropbox パブリックフォルダーのようなパブリックスペースに入れて、ここにリンクを提供するといいでしょう。=)
ADTC

3
多くの仕事、私はJimboによって提案されたネット使用を非常に好みます。
ジョナスビストレム

@JonasByströmしかし、最終結果は、OPの質問に対して得られるのと同じくらい素晴らしいです。「仕事の多くは、」私は個人的にそれを使用することはありませんにもかかわらず、これはupvoteに答えて稼いまさにされるように
sehe

12

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

(神保に感謝、あなたの答えは良かったが簡単ではなかった!)


2
賛成票が1つしかないことを後悔しています。これは確かに簡潔です。ありがとう。
user26398

1
これは理想的なアプローチです
ライアンB.

5

Shawn Keeneという名前の誰かが、Microsoft WebサイトのWindows 7フォーラムでこれに対する解決策を提供しました。これは、ネットワークプレースと呼ばれる機能にあります。

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

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

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

  4. 目的のUNCパスを入力し、[次へ]を2回クリックします。これにより、マッピングされたドライブの下にWindowsエクスプローラーの左ペインに表示されるエントリが追加されますが、マッピングされたドライブと同様に機能し、アプリケーションの[保存]ダイアログに表示されます。

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


1
別のソースを引用する場合は、そのソースにもリンクしてください。
DMA57361

もともとこの投稿から-W7の
マーク

ねえ、私はこれについて知っています、それは私が質問の「マップされたドライブの代わりにマップされたネットワークの場所をセットアップすることができた」という意味です-それは彼らの多くがマップされたドライブとして私のITの礼儀として私に来るということです部門、およびそれらをリンクできるようにしたいと思います。しかし、それは間違いなくいくつかの問題の可能な解決策です!
アーネストミューラー

PS私はあなたの答えに投票しますが、十分な担当者がいないので、「仮想+1!
アーネストミューラー

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

3

ホールドShiftダウンし、ファイルを右クリックして「パスとしてコピー」を選択します。電子メールにハイパーリンクを挿入し、ハイパーリンクダイアログボックスのアドレスフィールドに貼り付けます。

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

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

他のOffice 2010アプリケーション、Excel、Power Point、およびWordでこれを試しました。


これは動作しますが、それは同じ答えですkmoteの答え
davidmneedham

2

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


1
  1. エクスプローラーウィンドウで、左側のファイルツリーでマップされたドライブを右クリックします。
  2. [名前の変更]を選択します。
  3. テキストが強調表示されている間に、right_click-> copy。
  4. これで、パスがコピーされます(新しい場所にコピーした後、簡単に削除される余分なテキストがいくつかあります)。

1
名前を変更できるという事実からもわかるように、実際のパスが常に表示されるわけではありません。
ベンN

1

これを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

アンドリュー・ケリー:@Colkerr、私はあなたの「コピーUNC Filepath.vbs」を使用しようとしたが、私は2行目の文字54上のVBScriptコンパイルエラーが発生します「文の終わりを期待」
カナダのルークに

このコードは機能しません。ロックダウンされた企業環境にいる場合は、代わりにsuperuser.com/a/704374/46099を確認します
リチャード

フォルダーへの送信を見つけるには、ファイルエクスプローラーのロケーションバーに次のように入力します。shell:sendtoスクリプトはうまく機能しました。ソース: dummies.com/computers/operating-systems/windows-7/...
デヴィッドLotts

0

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

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

多数のユーザーとドキュメントを共有する場合、Microsoft SharePointのようなものは、Webインターフェイス(UNCスタイルのアクセス用のWebDAVを備えた)と、他のユーザーにドキュメントを警告する組み込みツールを提供するため、より良いソリューションです。

お役に立てれば。


1
フォルダーを右クリックしても、「ターゲットの検索」オプションが表示されません。正確にはどういう意味ですか?つまり、本当の道を見ることができます。それは謎ではありません。タイプするのではなく、切り取って貼り付けたいだけです。SharePoint用として、ソフトウェアで$ 50Kはに私の理想的な答えではない「が、私はちょうどカットし、パスを貼り付けることはできません...」
アーネスト・ミューラー

0

以下showmappeddrives.batを含むDOSバッチファイルを作成します。

@echo off    
net use
pause

必要に応じて、デスクトップにファイルを配置します。
ダブルクリックすると、マップされたすべてのドライブが表示されます。


これを使用する方法の説明を追加した場合、あなたの答えは2.5年前のジンボの答えの複製になります。
Gマン14年

0

フォルダを右クリック>共有>「自分と共有(何も意味なし)。パスを取得します。


0

代替の簡単なソリューション:

ドライブをドライブ文字としてマップ解除した場合は、代わりに「ネットワークの場所」として再追加します(エクスプローラーウィンドウで[コンピューター]を右クリックし、[ネットワークの場所を追加]を選択します)フォルダーのフルパスを入力します。今後は、アドレスバーに完全なパスが表示されます。ただし、ドライブを文字として使用するアプリケーションは失敗する場合があります。

上記の回答を見ると、上記から得た簡単な解決策を見たとは思わない: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


-2

SHIFT +右クリック「パスとしてコピー」は、ドライブ+ファイル名(つまり、R:\ test.doc)をコピーします。 ")

これはWindowsの「標準」動作であるため、私のお気に入りである、とりわけシステムを遅くするエクスプローラプラグインです。...;)


1
これは私の問題の解決に役立ちません。
アーネストミューラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.