Salah satu pelanggan kami biasanya menggunakan nama jalur yang sangat panjang (beberapa folder bersarang, dengan nama panjang) dan kami secara rutin menjumpai "masalah pendidikan pengguna" untuk mempersingkat jalur menjadi kurang dari 260 karakter.
Apakah ada solusi teknis yang tersedia, dapatkah kita menjentikkan semacam saklar di Windows 7 dan Windows 2008 R2 untuk mengatakan "yeah abaikan saja masalah historis ini, dan buat nama jalur karakter +260 berfungsi".
PS Saya telah membaca dan sama sekali tidak diverifikasi oleh Penamaan File, Paths, dan Namespace
windows
windows-server-2008
windows-7
ntfs
Christopher Edwards
sumber
sumber
Jawaban:
Metode ada di sana, tetapi sampai Microsoft kembali kode widget file-browser kami cukup banyak terjebak dengan masalah lama itu. Ini kurang optimal, tapi hanya cara kerjanya.
sumber
Hanya menyebutkan trik yang belum saya lihat disebutkan di sini.
Ambil file ini misalnya:
C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf
Jalur file lengkap ini sepanjang 290 karakter. Shell (Windows Explorer) dan sebagian besar utilitas baris perintah mungkin tidak akan membiarkan Anda menyentuhnya.
Gunakan
subst
perintah seperti ini:Sekarang Anda dapat mengakses (dan menghapus, memindahkan, dll.) File dengan demikian:
X:\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf
Dan sekarang nama file itu hanya ~ 235 karakter atau lebih, jadi Anda tidak akan menemui masalah "Nama file terlalu panjang" lagi.
Di Windows API, ada konstanta terkenal yang dikenal sebagai
MAX_PATH
. MAX_PATH adalah 260 karakter. Sistem file NTFS sebenarnya mendukung jalur file hingga 32.767 karakter. Dan Anda masih dapat menggunakan 32.767 nama jalur panjang karakter dengan mengakses versi Unicode (atau "lebar") dari fungsi Windows API, dan juga dengan mengawali lintasan dengan\\?\
.MAX_PATH
didirikan di batu sangat lama di dunia Windows. Saya pikir itu ada hubungannya dengan standar ANSI pada saat itu ... tetapi itu adalah salah satu hal yang sangat sulit bagi Microsoft untuk berubah sekarang, karena sekarang kami memiliki ribuan program dan aplikasi, termasuk beberapa yang ditulis oleh Microsoft sendiri, yang menggunakanMAX_PATH
dan akan gagal dengan cara baru yang aneh jika konstanta tiba-tiba berubah. (Buffer meluap, menumpuk korupsi, dll.)sumber
subst
dengan menggunakan persimpangan direktori, yang mungkin lebih nyaman untuk dibersihkan jika Anda hanya ingin membuat beberapa perubahan cepat. Saya menggunakan link Shell Extension , tapi Anda hanya dapat menggunakanmklink
perintah seperti:mklink /J C:\Wow "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow"
.Anda dapat mengatasi batasan ini dengan menggunakan notasi \\? \ C: Itu jelek, tetapi mendukung panjang file hingga 2 ^ 15.
http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#maxpath
sumber
c:\usr-data
ke `c: \ Users \ VeryLongUserName \ LongFolderName` dan katakan padanya untuk menggunakan yang pertama, tetapi jika ia secara teratur memberi nama folder dalam karakter 40-sesuatu maka ini tidak akan membantu ...Microsoft sekarang memiliki perbaikan yang tersedia untuk ini dimulai dengan Windows 10, yang dijelaskan dalam artikel Penamaan File, Paths, dan ruang nama MSDN.
darthcoder telah menjawab dengan rincian tentang
\\?\C:
notasiHKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)
yang dapat diselesaikan , tetapi sekarang ada kunci registri yang dapat digunakan untuk menghapus batasan MAX_PATH untuk satu sistem. Artikel tersebut juga menyebutkan dukungan untuk kontrol Kebijakan Grup diComputer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths
untuk implementasi organisasi atau seluruh kelompok jika diperlukan.sumber