私は頻繁に私のチームの他の人々とファイルへのWindowsネットワークパスを電子メールまたはチャットを通して共有したいです。ここにはたくさんのマップされたドライブがあります。どちらも自分でセットアップしたものでも、ITの君主によってセットアップされたものでもあります。私ができることを望んでいるのは、Windowsエクスプローラから完全な実パス(ドライブ名ではない)をコピーして人々に送ることです。
例: "Q:"ドライブに\\ cartman\users\emuellerというファイルがあり、その中のファイルfoo.docへのリンクを同僚に送信したいとします。ファイルパスをコピーすると(Shift +右クリック、「パスとしてコピー」)、クリップボードにファイル名「Q:\ foo.doc」が表示されます。これは、リンクを消費できるようにするには\\ cartman\users\emueller\foo.docを見る必要があると思われる他の人には役に立ちません。
エクスプローラでそれは明らかにフルパスを知っています - アドレスバーで私は "コンピュータ - > emueller(\\ cartman\users)(Q :) - >"を見ます。 「ちょっと人はそのパスをテキストとしてコピーしますか?\\ cartman\users\emuellerにQ:ではありませんか」と言う方法はありますか?
私が個人的に設定したドライブには、割り当てられたドライブの代わりに割り当てられたネットワークの場所を設定してこの問題を回避することができますが、「ユーザー」共有のようなほとんどの割り当てドライブ上書きされます。別のネットワーク上の場所を作成してからQ:ドライブを無視することもできますが、それは不便です(そして、サーバー間でアカウントを移動できるようにするため、そうしています)。ドライブレターの間接参照を失ったために電子メールで送信されたパスが最終的に破損する可能性がありますが、問題はありません。
私はまったく同じ問題を抱えていました - 誰もが私と同じドライブをマップしていたり、同じ文字にマップしていたわけではありません。
多くの検索の結果、私はGitHubでPath Copy Copyという名前のコンテキストメニュー拡張を見つけました( https://pathcopycopy.github.io/ )似たような古い拡張子(Pathcopyと呼ばれる)の拡張版で、パスをテキストとしてコピーするためのオプションがいくつかあります(UNCパス用など)。使用可能なオプションの例を以下に示します。
また、基本コンテキストメニューに1行または2行だけを表示するように選択することもできます。たとえば、Copy Long PathとCopy Long UNC Pathの2行を持つことができます。社内のネットワークパスにアクセスできるユーザーに電子メールを送信するのに最適です。また、自分と同じネットワークマッピングを持っている場合は前者を選択できます。それ以外の場合は後者を使用できます。
Update:バージョン12.0以降、上記のサイトで新しい "ポータブル"インストーラが利用可能になりました。これは現在のユーザーのためだけにAppData\Local
フォルダにインストールされます。私はこれを試したことはありませんが、通常のインストールが禁止されている人のための解決策になるかもしれません。
たぶん長い道のりだが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
をコピーすることができます。
お役に立てれば。
UPDATE:CoolCoolのアプローチ は偶数私よりも簡単です。彼の答えを支持しなさい
Outlook経由でネットワークマッピングパスを送信するときに使用する回避策は次のとおりです。
Q:\foo.doc
)として表示します。\\cartman\users\emueller\foo.doc
)に変換されました。マウスを[住所]フィールドに置いて、ヒットします。 ctrl-A そして ctrl-C フルパスをクリップボードにコピーしてから、カーソルを一番上のフィールド( "Text to Display:")に移動します。 ctrl-A そして ctrl-V あなたのEメールに正しく表示するため。Geoff が基本的に注目されていましたが、さらに一歩進んで
私は、OPが求めているものと、Googleで検索して答えを読んだ後で同じものを必要としていましたが、どれも私がOPと思い、探しているものを提供しませんでした。
ここでの問題は、ネットワーク共有をDrive Y
にマッピングするのに対して、組織内の他の誰かがDrive X
として同じネットワーク共有をマッピングする可能性があることです。したがって、Y:\mydirectory
などのリンクを送信しても、私以外の人にはうまくいかない場合があります。
OPが説明するように、エクスプローラはエクスプローラバーに実際のパスを表示しますが、コンテキストメニューからcopy as path
を選択してもコピーすることはできません(入力は面倒でエラーが発生しやすいのでこれはオプションではありません)
だから私が(他の誰かのコードをコピーすることによって)思いついた解決策はあなたがエクスプローラのコンテキストメニューから呼び出すことができて、そしてあなたが実際の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
の中で
これで、エクスプローラにコンテキストメニューオプションを追加しました。
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"
これで終わりです。マップされたドライブからディレクトリを右クリックすると、このオプションが表示されます。
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さん、 あなたの答え はよかったですが簡単ではありませんでした!)
Shawn Keeneという名前の誰かが、MicrosoftのWebサイトのWindows 7フォーラムで 解決策 を提供しました。 Network Placeという機能にあります。
Windowsエクスプローラを開きます。
左ペインの[コンピュータ]エントリを右クリックし、[ネットワークの場所を追加]を選択します。次へをクリックしてください。
[カスタムネットワークの場所を選択する]オプションを選択し(それが私に提示された唯一のものでした)、[次へ]をクリックします。
目的のUNCパスを入力して、[次へ]を2回クリックします。これにより、マップされたドライブの下のWindowsエクスプローラの左ペインに表示されるエントリが追加されますが、マップされたドライブと同じように機能し、アプリケーションの保存ダイアログにそのように表示されます。
Windowsエクスプローラで、そのエントリを目的のサブディレクトリに移動し、Windowsエクスプローラ画面の上部にあるパンくずリストのパス表示の右側の空白部分をクリックすると、UNCパスが表示されて強調表示されます。
ホールド Shift ファイルを右クリックして[パスとしてコピー]を選択します。電子メールにハイパーリンクを挿入し、ハイパーリンクダイアログボックスのアドレスフィールドに貼り付けます。
電子メールにハイパーリンクを作成したら、完了です。
リンクはマッピングされたドライブ文字を表示しますこれは本当です。受信者が電子メールのリンクをクリックすると、ユーザーがマップされているかどうかにかかわらず、受信者はUNCパスをたどります。
私は他のOffice 2010アプリケーション、Excel、Power Point、およびWordでこれを試しました。
コンピュータのディレクトリビューでディレクトリ名を右クリックして[名前の変更]を選択することもできます。これでパスをコピーすることができます。
これをあなたのsendtoフォルダに保存してください。私のフォルダはC:\Documents and Settings\xxxxID\SendTo
のような名前でCopy UNC Filepath.vbs
にあります(.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
フォルダを右クリック>共有> "自分と共有(何も意味しません)。パスが表示されます。または[すべてのネットワーク共有を表示]をクリックします。
企業ネットワークでは、ほとんどのIT部門がDFS名前空間を使用して共有を作成し、DFS共有内でフォルダを右クリックしてそのターゲットを見つけることができます。
もう1つの方法は、共有がActive Directoryに公開されているかどうかを確認することです。他のユーザーがUNCパスやファイルサーバーの名前/パスを知らなくても共有を見つける最も簡単な方法。
多数のユーザーとドキュメントを共有する場合は、Webインターフェイス(UNCスタイルのアクセス用にWebDAVを使用)を提供し、他のユーザーにドキュメントを通知するためのツールが組み込まれているため、Microsoft SharePointのようなソリューションが優れています。
お役に立てれば。
代替の簡単な解決策:
ドライブをドライブ文字として割り当て解除した場合は、代わりに「ネットワーク上の場所」として追加し直します(すなわち、エクスプローラウィンドウで「コンピュータ」を右クリックし、「ネットワーク上の場所を追加」を選択します)。 。進むと、アドレスバーにフルパスが表示されます。ただし、ドライブを文字として使用するアプリケーションは失敗する可能性があります。
上記の回答を見てみると、私が上記の簡単な解決策を見たとは思わない。 https://answers.Microsoft.com/ja-jp/windows/forum/windows_7- files/how-can-i-sub-の絶対パスを表示する/ ebfd4253-8016-4cbd-b0d6-1bbeae9189f9
以下を含むshowmappeddrives.bat
のようなDOSバッチファイルを作成します。
@echo off
Net Use
pause
必要に応じてファイルをデスクトップに置きます。
これをダブルクリックすると、マップされたドライブがすべて表示されます。