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

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

Advertisement

私は、電子メールやチャットを介してチームの他の人とファイルへのWindowsネットワークパスを共有したいと頻繁に思っています。私たちはここにたくさんのマップされたドライブを持っています, 私たちは自分自身をセットアップするものと私たちのITの大将によってセットアップされたものの両方を持っています。私ができるようにしたいと思うことは、人々に送信するためにWindowsエクスプローラから完全な実際のパス(ドライブ文字ではなく)をコピーすることです。Q: “ドライブにファイルがあるんだけど、その中のファイルfoo.docへのリンクを同僚に送りたいんだ。ファイルのパスをコピーすると (shift+right click, "copy as path”)、クリップボードにファイル名 “Q:\foo.doc” が表示されます。これは他の人にとっては役に立たない。他の人は、リンクを消費するためには「\cartman\users\emueller\foo.doc」を見なければならないだろう。

In Explorerでは、それは明らかにフルパスを知っている - in the address bar I see “Computer -> emueller (\cartman\users)(Q:) ->”. と言う方法はあるのだろうか?"hey man copy that path as text with the Q: not the Q: in it?“

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

Advertisement
Advertisement

回答 (17)

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

多分長い方法のまわりでしかし 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
47
47
2012-08-24 23:20:11 +0000

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

いろいろ探した結果、GitHub https://pathcopycopy.github.io/ ) で Path Copy Copy という名前のコンテキストメニュー拡張機能を見つけました。

また、基本コンテキストメニューの1行か2行だけを表示するように選択することもできます。これは、ネットワークパスへのアクセス権を持っている会社のユーザーにメールを送るのに最適です。バージョン12.0の時点では、上記サイトに新しい「ポータブル」インストーラが用意されており、現在のユーザのみがAppData\Localフォルダにインストールされます。試していませんが、通常のインストールが禁止されている方の解決策になるかもしれません。

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

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

ここでは、Outlookを介してマップされたネットワークパスを送信するときに私が使用する回避策です:

1.Windowsエクスプローラで、シフトボタンを押したまま、ファイルをr-clickして、" パスとしてコピー“を選択します。メールにハイパーリンクを挿入し、ハイパーリンクダイアログボックスのアドレス欄に貼り付けます。(ショートカット: ctrl-K ctrl-V + OK)。この時点で、リンクにはmappedドライブレターがルート(Q:\foo.doc)として表示されます。ここで、r-clickして” Edit Hyperlink…“を選択すると、アドレスフィールドがフルUNCパス(\cartman\users\emueller\foo.doc)に変換されていることに気づくでしょう。アドレスフィールドにマウスを置いた状態で、Ctrl-AとCtrl-Cを押してフルパスをクリップボードにコピーし、カーソルを一番上のフィールドに移動してください。

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

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

  1. Windows エクスプローラーからフォルダを右ドラッグして、新しいメールの本文に挿入します。
20
Advertisement
20
20
2012-08-24 20:23:12 +0000
Advertisement

私は、OPが質問していることと同じことをしたいと思っていたのですが、Googleで検索して回答を読んでも、OPと私が探しているものは見つかりませんでした。

ここでの問題は、ある人がネットワーク共有をDrive Yにマッピングしているのに対して、組織内の誰かが同じネットワーク共有をDrive Xにマッピングしているかもしれないということです。

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

そこで私が考え出した解決策は(他人のコードをコピーして)、エクスプローラーのコンテクストメニューから呼び出すことができ、マップされたドライブレターを実際のcopy as 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()));           
            }
        }
    }
}

そして、ここに 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;
    }
}

プログラムをビルドし、実行ファイルをPCのどこかに置いてください。これで、マップされたドライブからディレクトリを右クリックすると、このオプションが表示されます:

Note

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

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

コマンドcmd.exeを実行してください:

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という人が、MicrosoftのウェブサイトのWindows 7フォーラムで、これに対する解決策を提供してくれました。それはネットワークプレイスと呼ばれる機能にあります。Windowsエクスプローラを開きます。左ペインの[コンピュータ]エントリを右クリックし、[ネットワーク場所の追加]を選択します。次をクリックします。

  1. “カスタムネットワークの場所を選択してください "オプションを選択します(それは私に提示された唯一のものでした)とクリックして次へ。希望するUNCパスを入力し、[次へ]を2回クリックします。これで、マップされたドライブの下のWindowsエクスプローラの左ペインに表示されるエントリが追加されますが、マップされたドライブと同じように動作し、アプリケーションの保存ダイアログでそのように表示されます。

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

4
4
4
2014-11-13 15:35:34 +0000
  1. フォルダを開きます。フォルダからMicrosoft Wordにファイルを右ドラッグします。
3
Advertisement
3
3
2013-10-02 19:04:28 +0000
Advertisement

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

メールにハイパーリンクを作成したら完了です。受信者がメール内のリンクをクリックすると、ユーザーがマップされているかどうかに関わらず、UNCパスに従います。

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. エクスプローラウィンドウで、左側のファイルツリーでマップされたドライブを右クリックします。Select Rename. Text is highlighted, right_click->copy. 今、パスはコピーされます(新しい場所にコピーされた後、簡単に削除されるいくつかの余分なテキストで。
0
0
0
2014-10-09 22:20:56 +0000

002

@echo off    
net use
pause

を含む showmappeddrives.bat のような DOS バッチファイルを作成してください。

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

代替の簡単な解決策:

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

上記の回答を見ていると、次のような簡単な解決策は見当たらないと思います。

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

DFS Sharesの中では、フォルダを右クリックしてターゲットを探すことができます。

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

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

right-click the folder ¶ Share ¶ “ share to yourself ( means nothing) . you will get the path. / or or or alle network shaphord.

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

The SHIFT + RightClick “Copy as path” will copy the drive+filename (i.e.e. R:\test.doc), or you are looking at at file via UNCpath the UNCpath+filename (i.e.e. “I.e. ”\nasDocuments\test.doc")

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

Advertisement

Questions connexes

3
28
13
7
7
Advertisement
Advertisement