Salin jalur jaringan UNC (bukan huruf drive) untuk jalur pada drive yang dipetakan dari Windows Explorer

87

Saya sering ingin berbagi jalur jaringan Windows ke file dengan orang lain di tim saya melalui email atau obrolan. Kami memiliki banyak drive yang dipetakan di sini, baik yang kami atur sendiri maupun yang disiapkan oleh penguasa TI kami. Apa yang ingin saya lakukan adalah menyalin path lengkap asli (bukan huruf drive) dari Windows Explorer untuk dikirim ke orang-orang.

Contoh: Saya punya file di drive "Q:", \\ cartman \ users \ emueller, dan saya ingin mengirim tautan ke file foo.doc di dalamnya kepada rekan kerja. Ketika saya menyalin path file (shift + klik kanan, "copy as path") itu mendapat nama file "Q: \ foo.doc" di clipboard. Ini tidak membantu orang lain, yang perlu melihat \\ cartman \ users \ emueller \ foo.doc untuk dapat menggunakan tautan.

Di Explorer jelas tahu jalur lengkap - di bilah alamat saya melihat "Komputer -> emueller (\\ cartman \ pengguna) (Q :) ->". Apakah ada cara untuk mengatakan "hei, man copy path itu sebagai teks dengan \\ cartman \ users \ emueller bukan T: di dalamnya?"

Saya tahu saya hanya bisa mengatur lokasi jaringan yang dipetakan alih-alih drive yang dipetakan untuk drive yang saya buat secara pribadi dan menghindari masalah ini, tetapi sebagian besar drive yang dipetakan seperti bagian "pengguna" berasal dari kebijakan TI perusahaan kami dan tidak dapat ditimpa. Saya hanya bisa membuat lokasi jaringan yang terpisah dan kemudian mengabaikan drive Q: tapi itu tidak nyaman (dan mereka melakukannya sehingga mereka dapat memindahkan akun di server). Tentu jalur email saya akhirnya mungkin rusak karena saya kehilangan tipuan huruf drive tapi tidak apa-apa dengan saya.

Ernest Mueller
sumber
1
Jika Anda menjalankan dalam lingkungan perusahaan yang terkunci di mana Anda tidak dapat menginstal aplikasi pihak ketiga dan / atau mengakses registri, maka solusi ini akan berfungsi ... superuser.com/a/704374/46099
Richard

Jawaban:

46

Saya memiliki masalah yang persis sama - tidak semua orang memiliki drive yang dipetakan sama seperti saya, atau dipetakan dengan huruf yang sama.

Setelah banyak pencarian, saya menemukan ekstensi menu konteks bernama Path Copy di GitHub ( https://pathcopycopy.github.io/ ) yang merupakan versi ekstensi dari ekstensi yang lebih lama dan serupa (disebut Pathcopy) memiliki beberapa opsi untuk menyalin jalur. sebagai teks, termasuk satu untuk jalur UNC - contoh opsi yang tersedia ditunjukkan di bawah ini:

Contoh Path Path Context Menu

Anda juga dapat memilih untuk hanya menampilkan satu atau dua baris pada menu konteks dasar, misalnya Anda dapat memiliki dua baris, Salin Jalur Panjang, dan Salin Jalur Panjang UNC. Ini bagus untuk mengirim email kepada pengguna di perusahaan Anda yang memiliki akses ke jalur jaringan, dan jika mereka memiliki pemetaan jaringan yang sama dengan Anda, Anda dapat memilih yang pertama, jika tidak, Anda dapat menggunakan yang terakhir.

Pembaruan : Pada versi 12.0, penginstal "portabel" baru tersedia di situs di atas, yang hanya menginstal untuk pengguna saat ini ke dalam AppData\Localfolder. Saya belum pernah mencoba ini, tetapi bisa jadi solusi bagi mereka yang dilarang menginstal secara normal.

i_saw_drones
sumber
4
Sedikit berantakan, saya lebih suka menggunakan internet seperti yang disarankan oleh Jimbo.
Jonas Byström
49

Mungkin jauh tetapi membuka jendela cmd. Lalu lakukannet use > filename

Kemudian buka nama file dan Anda bisa mendapatkan path:
Ex:

C:\Users\me\net use > drives.txt

Pembukaan drives.txt

New connections will be remembered.
Status       Local     Remote                    Network
-------------------------------------------------------------------------------
             H:        \\server\c\proj\net       Microsoft Windows Network

Dapat menyalin \\server\c\prog\netdari file untuk Anda gunakan.

Semoga ini membantu.

Jimbo
sumber
10
sederhana dan mudah. Semua solusi lain dalam topik ini sangat banyak ...
radistao
8
Atau, lewati saja "> drive.txt" dan salin jalur yang dihasilkan langsung dari jendela terminal.
DarenW
1
Sederhana & mudah Menang.
CAD berpasangan
Dengan msysgit / bash di ujung jari Anda ini jauh lebih mudah daripada solusi lainnya. Agung!
Jonas Byström
1
net use > filename bingung saya .. dan saya menggunakan nama file pdf saya yang sebenarnya di tempat itu sehingga menghancurkan file pdf asli saya. ya saya tahu ini salah saya. jadi berhati-hatilah. cukup gunakan net usedan salin dari jendela terminal. dan jika Anda benar-benar membutuhkannya di dalam file .. maka Anda tahu apa yang harus dilakukan .. `> uncpathnamefile.txt '
ihightower
38

PEMBARUAN: Pendekatan CoolCol bahkan lebih mudah daripada pendekatan saya. Hapus jawaban itu.

Inilah solusi yang saya gunakan saat mengirim jalur jaringan yang dipetakan melalui Outlook:

  1. Di Windows Explorer, tahan shifttombol, r-klik pada file, dan pilih " Copy as path ".
  2. Masukkan Hyperlink di email dan rekatkan di bidang alamat kotak dialog Hyperlink. (Pintasan: ctrl-K ctrl-V+ OK). Pada titik ini, tautan akan menampilkan huruf drive yang dipetakan sebagai root ( Q:\foo.doc).
  3. Sekarang, klik-r dan pilih " Edit Hyperlink ... " Anda akan melihat bahwa bidang Alamat telah diterjemahkan kembali ke jalur UNC lengkap ( \\cartman\users\emueller\foo.doc). Dengan mouse Anda di bidang Alamat, tekan ctrl-Adan ctrl-Cuntuk menyalin path lengkap ke clipboard Anda, kemudian pindahkan kursor Anda ke bidang atas ("Teks untuk Menampilkan:") tekan ctrl-Adan ctrl-Vuntuk menampilkannya dengan benar di email Anda.
kmote
sumber
Saya tidak melihat hal-hal yang dijelaskan.
DarenW
bagian mana yang tidak bisa kamu lihat? Bisakah Anda membuat hyperlink? Apakah Anda tahu cara mengedit tautan?
kmote
3
Pada langkah 3. jika Anda mengetik karakter dan menghapusnya, itu akan memperbarui "Teks untuk Ditampilkan", yang lebih mudah daripada menyalin / menempel.
79E09796
Anda tidak perlu mengetikkan karakter di "Teks untuk Ditampilkan" dan kemudian menghapusnya, cukup hapus saja.
Bae
1
Lihat jawaban Coolcol superuser.com/a/922152/190599 untuk mempercepat salinan dengan klik kanan opsi "Buat Pintasan Di Sini".
Bae
29

Geoff pada dasarnya tepat, tetapi untuk mengambil satu langkah lebih jauh,

  1. RIGHT-DRAG folder dari Windows Explorer, ke dalam tubuh email baru Anda,
  2. lalu pilih 'Buat Hyperlink Di Sini' .
Coolcol
sumber
1
tercepat dan paling di luar kotak-est
Alex
3
Harus menjadi jawaban terbaik karena masalahnya muncul sebagian besar di lingkungan perusahaan dan Anda tidak dapat menginstal perangkat lunak di sana sendiri.
berezovskyi
Ini perlu digabungkan dengan jawaban kmote superuser.com/a/454119/190599 karena keduanya bersama-sama super cepat
Bae
19

Saya hanya memiliki kebutuhan untuk hal yang sama yang ditanyakan OP dan setelah mencari di Google dan membaca jawabannya, tidak satupun dari mereka memberikan apa yang saya pikir OP dan saya cari.

Masalahnya di sini adalah bahwa seseorang dapat memetakan pangsa jaringan ke Drive Ysedangkan orang lain dalam organisasi mungkin memiliki pangsa jaringan yang sama dipetakan sebagai Drive X; karena itu, mengirim tautan seperti Y:\mydirectorymungkin tidak berfungsi untuk orang lain kecuali saya.

Seperti yang dijelaskan OP, Explorer memang memperlihatkan jalur aktual di bilah Explorer, tetapi Anda tidak dapat menyalinnya (mengetik membosankan dan rentan terhadap kesalahan, jadi ini bukan pilihan) bahkan jika Anda memilih copy as pathdari menu konteks:

masukkan deskripsi gambar di sini

Jadi solusi yang saya buat (dengan menyalin kode orang lain) adalah program C # kecil yang dapat Anda panggil dari menu konteks di Explorer dan akan memungkinkan Anda untuk menerjemahkan huruf drive yang dipetakan ke aktual UNC path.

Ini kodenya:

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()));           
            }
        }
    }
}

Dan inilah Pathingdefinisi kelas (saya akan mencoba mencari sumber yang sebenarnya karena saya tidak ingat di mana saya menemukannya):

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;
    }
}

Anda membangun program dan meletakkan executable di suatu tempat di PC Anda, katakan misalnya, di c:\Utils

Sekarang Anda menambahkan opsi menu konteks di Explorer sebagai berikut:

Regedit lalu:

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"

Kamu selesai. Sekarang Anda akan melihat opsi ini ketika Anda mengklik kanan direktori dari drive yang dipetakan:

masukkan deskripsi gambar di sini

Catatan

Saya dapat memberikan yang dapat dieksekusi sehingga Anda tidak perlu melakukan kompilasi sendiri. Cukup beri saya catatan di sini.

Icarus
sumber
1
Akan lebih baik jika Anda membuka zip file yang dapat dieksekusi dan meletakkannya di ruang publik seperti folder Dropbox Public dan memberikan tautan di sini. =)
ADTC
3
Banyak pekerjaan, saya lebih suka menggunakan internet seperti yang disarankan oleh Jimbo.
Jonas Byström
@ JonasByström Tapi hasil akhirnya sama baiknya dengan pertanyaan OP. Sehingga "banyak pekerjaan" itulah yang menghasilkan jawaban ini, meskipun saya tidak akan menggunakannya secara pribadi
sehe
12

Jalankan cmd.exeperintah 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

(Terima kasih Jimbo, jawabanmu bagus tapi tidak singkat!)

Jonas Byström
sumber
2
Saya menyesal hanya memiliki satu suara untuk diberikan. Ini memang singkat. Terima kasih.
user26398
1
Ini adalah pendekatan yang ideal
Ryan B.
5

Seseorang bernama Shawn Keene memberikan solusi untuk ini di Forum Windows 7 di situs web Microsoft. Itu dalam fitur yang disebut Tempat Jaringan.

  1. Buka Windows Explorer.

  2. Klik kanan pada entri Komputer di panel kiri dan pilih "Tambahkan lokasi jaringan". Klik selanjutnya.

  3. Pilih opsi “Pilih lokasi jaringan khusus” (itu adalah satu-satunya yang disajikan kepada saya) dan klik Berikutnya.

  4. Ketik jalur UNC yang diinginkan dan klik Berikutnya dua kali. Ini menambahkan entri yang muncul di panel kiri Windows Explorer di bawah drive yang dipetakan, tetapi berfungsi seperti drive yang dipetakan dan muncul seperti itu di dialog Simpan aplikasi.

  5. Di Windows Explorer, navigasikan melalui entri itu ke sub-direktori yang diinginkan dan klik di area kosong di sebelah kanan tampilan jalur remah roti di bagian atas layar Windows Explorer dan jalur UNC muncul dan disorot.

Menandai
sumber
1
jika Anda akan mengutip sumber lain, bisakah Anda menautkan ke sumber itu juga?
DMA57361
Berasal dari pos ini - sumber W7 tidak ditentukan di sana: countrykeepers.com/wp/?p=3017
Tandai
Hei, terima kasih sudah ikut. Saya tahu tentang ini, itulah yang saya maksud dengan "Saya hanya bisa mengatur lokasi jaringan yang dipetakan alih-alih drive yang dipetakan" dalam pertanyaan - itu adalah banyak dari mereka yang datang kepada saya sebagai drive yang dipetakan dengan hormat dari TI saya departemen, dan saya ingin dapat menghubungkannya. Tapi itu pasti solusi yang mungkin untuk beberapa masalah!
Ernest Mueller
PS Saya akan memilih jawaban Anda, tetapi tidak cukup perwakilan, jadi "virtual +1!"
Ernest Mueller
4
  1. Buka Folder.
  2. KANAN seret file dari folder ke Microsoft Word.
Geoff
sumber
3

Tahan Shiftdan klik kanan pada file dan pilih "Copy as path". Masukkan Hyperlink di email dan rekatkan di bidang alamat kotak dialog Hyperlink.

Setelah Anda membuat hyperlink di email, Anda selesai.

Tautan akan menunjukkan huruf drive yang dipetakan ini benar. Ketika penerima mengklik tautan di email, ia akan mengikuti jalur UNC apakah pengguna dipetakan atau tidak.

Saya telah mencoba ini di aplikasi Office 2010 lainnya, Excel, Power Point, dan Word.

keNscale
sumber
Ini berfungsi, tetapi itu adalah jawaban yang sama dengan jawaban kmote
davidmneedham
2

Anda juga dapat mengklik kanan nama direktori pada tampilan direktori komputer dan memilih ganti nama. Ini akan memberi Anda akses untuk menyalin path.

Craig
sumber
1
  1. Di jendela penjelajah, klik kanan drive yang dipetakan di bagan file di sebelah kiri.
  2. Pilih Ganti nama.
  3. Sementara Teks disorot, right_click-> salin.
  4. Sekarang path disalin (dengan beberapa teks tambahan yang mudah dihapus setelah disalin ke lokasi baru.
ThomB
sumber
1
Perhatikan bahwa jalur yang benar tidak selalu muncul di sana, sebagaimana dibuktikan oleh fakta bahwa Anda dapat mengubah nama jalur itu.
Ben N
1

Simpan ini di folder sendto Anda, milik saya C:\Documents and Settings\xxxxID\SendTo dengan nama seperti Copy UNC Filepath.vbs (harus diakhiri .vbs) Sekarang ketika Anda mengklik kanan pada folder atau file itu akan menyalin UNC ke clipboard. Folder pribadi kami adalah drive F dan sehingga tidak mengkonversi C: atau 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
sumber
Dari Andrew Kelly : @Colkerr, saya mencoba menggunakan "Salin UNC Filepath.vbs" Anda tetapi saya mendapatkan kesalahan kompilasi VBScript pada karakter baris 2 54 "Akhir yang diharapkan dari pernyataan"
Canadian Luke
Kode ini tidak berfungsi. Saya akan melihat superuser.com/a/704374/46099 sebagai gantinya jika Anda berada dalam lingkungan perusahaan yang terkunci.
Richard
Untuk menemukan folder kirim ke, ketikkan ini ke dalam bar lokasi penjelajah file: shell: sendto Skrip bekerja dengan baik untuk saya. sumber: dummies.com/computers/operating-systems/windows-7/…
David Lotts
0

Di jaringan perusahaan, sebagian besar Departemen TI membuat saham menggunakan DFS Name Spaces, dalam DFS Share Anda dapat mengklik kanan pada folder dan menemukan targetnya.

Metode lain adalah untuk melihat apakah Share diterbitkan ke Active Directory. Cara termudah bagi pengguna lain untuk menemukan saham tanpa mengetahui jalur UNC atau nama / jalur Server File.

Jika Anda berbagi dokumen dengan sejumlah besar pengguna, sesuatu seperti Microsoft SharePoint mungkin merupakan solusi yang lebih baik karena menawarkan antarmuka web (dengan WebDAV untuk akses gaya UNC) dan menawarkan alat bawaan untuk mengingatkan pengguna lain pada dokumen.

Semoga ini membantu.

dmd83
sumber
1
Ketika saya mengklik kanan pada folder saya, saya tidak melihat opsi "find target" - apa maksud Anda tepatnya? Maksudku, aku bisa melihat jalan yang sebenarnya, itu bukan misteri, aku hanya ingin bisa memotong dan melewatinya dan tidak mengetik. Sedangkan untuk Sharepoint, $ 50k dalam perangkat lunak bukanlah jawaban ideal saya untuk "tetapi saya tidak bisa hanya memotong dan menempelkan jalan ..."
Ernest Mueller
0

Buat file batch DOS seperti showmappeddrives.batyang berisi:

@echo off    
net use
pause

Tempatkan file di desktop Anda jika Anda mau.
Klik dua kali dan itu akan menampilkan semua drive Anda yang dipetakan.

Sang pangeran
sumber
Jika Anda menambahkan penjelasan tentang cara menggunakan ini, maka jawaban Anda akan merupakan duplikat dari jawaban Jimbo dari 2½ tahun yang lalu.
G-Man
0

Klik kanan folder> Bagikan> "bagikan kepada diri sendiri (tidak berarti apa-apa). Anda akan mendapatkan jalurnya. / Atau \. Atau klik tampilkan semua jaringan yang dibagikan.

aabbcc
sumber
0

Solusi Sederhana Alternatif:

Jika Anda menghapus peta drive sebagai huruf drive, tambahkan kembali itu sebagai "lokasi jaringan" (yaitu klik kanan "Komputer" pada Jendela Explorer dan pilih "Tambahkan lokasi jaringan") Ketik path lengkap untuk folder . Ke depan itu akan menampilkan path lengkap di bilah alamat. Namun, aplikasi yang bergantung pada drive sebagai huruf mungkin gagal.

Melihat melalui tanggapan di atas saya tidak berpikir saya melihat solusi sederhana di atas yang saya peroleh dari: 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

Aiju
sumber
-2

SHIFT + RightClick "Copy as path" akan menyalin drive + nama file (yaitu R: \ test.doc), atau jika Anda melihat file melalui UNCpath nama file UNCpath + (yaitu "\ nas \ Documents \ test.doc" ")

Ini adalah perilaku 'standar' Windows, dan karena itu favorit saya, di atas semua plugin explorer yang memperlambat sistem ....;)

Luuk
sumber
1
Ini tidak membantu menyelesaikan masalah saya.
Ernest Mueller