विंडोज में अधिकतम फ़ाइल पथ लंबाई प्रतिबंध पर काबू पाने


36

हमारे ग्राहकों में से एक आदतन बहुत लंबे पथ नाम (कई नेस्टेड फ़ोल्डर, लंबे नामों के साथ) का उपयोग करते हैं और हम 260 से कम वर्णों के लिए पथ को छोटा करने के लिए "उपयोगकर्ता शिक्षा के मुद्दों" का नियमित सामना करते हैं।

क्या कोई तकनीकी समाधान उपलब्ध है, क्या हम विंडोज 7 और विंडोज 2008 आर 2 में किसी प्रकार के स्विच को "हां सिर्फ इन ऐतिहासिक समस्याओं को नजरअंदाज करने के लिए, और +260 चरित्र पथ नाम का काम" कह सकते हैं।

PS मैंने नामकरण फ़ाइलें, पथ और नामस्थान द्वारा पूरी तरह से पढ़ा और पढ़ा जा रहा है


3
यहां हम 2018 में हैं और समस्या अभी भी ROBOCOPY में मौजूद है। 255 की सीमा। इसे पार करने वाले बस बीप करते हैं लेकिन नकल नहीं करते।
एसडीसोलर

@SDsolar: क्या आप रोबोकॉपी के पुराने संस्करण का उपयोग कर रहे हैं?
Naikrovek

हाँ, एक ही कहने जा रहा था - किसी को विशेष रूप से रोबोकॉपी का उपयोग करना होगा क्योंकि यह लंबे रास्तों को संभाल सकता है ...
रॉब निकोलसन

जवाबों:


12

विधियाँ हैं, लेकिन जब तक Microsoft फ़ाइल-ब्राउज़र विजेट को पुन: कोड नहीं कर देता, तब तक हम उस पुरानी समस्या से बहुत चिपके हुए हैं। यह उप-इष्टतम है, लेकिन यह सिर्फ इतना है कि यह कैसे काम करता है।


5
MS सॉफ़्टवेयर में बग जो कुछ OS रिलीज़ के लिए अनफ़िक्स किया गया है, वह एक नया है ...
ह्यूबर्ट कारियो

2
विंडोज 10 1607 ने आखिरकार फाइल-ब्राउज़र की समस्या को ठीक कर दिया है और विशाल पथों की इस अजीब नई दुनिया में काम करने के लिए Win32 अनुप्रयोगों को बेवकूफ बनाने के लिए कुछ विजार्ड्री है
HackSlash

28

बस एक ऐसी ट्रिक का जिक्र कर रहा हूं जिसका जिक्र यहां नहीं है।

इस फ़ाइल को उदाहरण के लिए लें:

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

यह पूर्ण फ़ाइल पथ 290 वर्ण लंबा है। शेल (विंडोज एक्सप्लोरर) और अधिकांश कमांड लाइन उपयोगिताओं शायद आपको इसे छूने नहीं देंगे।

substकमांड का उपयोग करें जैसे:

subst X: "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow"

अब आप फ़ाइल को एक्सेस (और डिलीट, मूव वगैरह) कर सकते हैं।

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

और अब उस फ़ाइल का नाम केवल ~ 235 अक्षर या तो है, इसलिए आपको "फ़ाइल नाम बहुत लंबा है" समस्याओं का सामना नहीं करना पड़ेगा।

विंडोज एपीआई में, एक बदनाम स्थिरांक है जिसे कहा जाता है MAX_PATH। MAX_PATH 260 वर्ण है। NTFS फ़ाइल सिस्टम वास्तव में 32,767 वर्णों के फ़ाइल पथ का समर्थन करता है। और आप अभी भी Windows API फ़ंक्शंस के यूनिकोड (या "विस्तृत") संस्करणों तक पहुंचकर 32,767 वर्ण लंबे पथ नामों का उपयोग कर सकते हैं, और इसके साथ पथ को प्रीफ़िक्स करके भी \\?\

MAX_PATHविंडोज दुनिया में बहुत पहले पत्थर में सेट किया गया था । मुझे लगता है कि उस समय एएनएसआई मानकों के साथ कुछ करना है ... लेकिन यह उन चीजों में से एक है जो माइक्रोसॉफ्ट के लिए अब बदलना बहुत मुश्किल है, क्योंकि अब हमारे पास हजारों प्रोग्राम और एप्लिकेशन हैं, जिनमें कुछ माइक्रोसॉफ्ट द्वारा स्वयं लिखे गए हैं, जो उपयोग करते हैं MAX_PATHऔर अजीब नए तरीकों से विफल हो जाता है यदि निरंतर को अचानक बदल दिया जाता। (बफर ओवरफ्लो, ढेर भ्रष्टाचार, आदि)


9
मैं substनिर्देशिका जंक्शनों का उपयोग करके समान दृष्टिकोण ले रहा हूं , जो कि अगर आप कुछ त्वरित बदलाव करना चाहते हैं, तो सफाई के लिए अधिक सुविधाजनक हो सकता है। मैं लिंक शैल एक्सटेंशन का उपयोग करता हूं , लेकिन आप बस mklinkकमांड का उपयोग कर सकते हैं जैसे mklink /J C:\Wow "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow":।
चार्ल्स ग्रुनवल्ड

10

आप इस सीमा के आसपास \\? \ C: संकेतन का उपयोग करके प्राप्त कर सकते हैं। यह बदसूरत है, लेकिन यह 2 ^ 15 तक फ़ाइल की लंबाई का समर्थन करता है।

http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#maxpath


2
हाँ, मैंने पढ़ा है, जैसा कि मैंने कहा (मेरी लिंक देखें)। लेकिन मुझे इससे वास्तव में कैसे फायदा होता है? क्या मैं उदाहरण के लिए \\? \ Something के लिए एक ड्राइव मैप कर सकता हूं। मुझे समझ नहीं आ रहा है। लेख विंडोज़ एपीआई का उपयोग कर प्रोग्रामर के लिए अभिप्रेत है। जब भी मैं .NET में कोड करता हूं, जब आवश्यकता होती है तो मैं C ++ आदि का उपयोग नहीं करता हूं और यह नहीं देख सकता कि यह मेरे ग्राहक कर्मचारियों के लिए कैसे प्रासंगिक है जो विंडोज़ एक्सप्लोरर और सामान्य फ़ाइल संवाद आदि का उपयोग कर रहे हैं
क्रिस्टोफर एडवर्ड्स

1
अंत में, कोई नहीं है। :-/ अफसोस की बात है।
क्रिस के

@ChristopherEdwards आप फ़ोल्डर पदानुक्रम में निम्न बिंदुओं पर जंक्शन बना सकते हैं।
ह्यूबर्ट करियो

1
@ChristopherEdwards आप एक लिंक कर सकते हैं c:\usr-data`c: \ Users \ VeryLongUserName \ LongFolderName` और उसे पूर्व का उपयोग करने के लिए कहें, लेकिन यदि वह नियमित रूप से 40-कुछ वर्णों में फ़ोल्डर्स का नाम देता है, तो इससे आपको मदद मिलेगी ...
Hubert Kario

2
7-ज़िप खुशी से \\? \ C: संकेतन में ब्राउज़ और कॉपी करेगा, इसके लायक क्या है।
मैट ल्यों

9

Microsoft के पास अब Windows 10 के साथ इस शुरुआत के लिए एक उपलब्ध फ़िक्सेस है, जिसे नामकरण फ़ाइलें, पथ और नामस्थान NDN आलेख में समझाया गया है ।

darthcoder पहले से ही \\?\C:संकेतन कार्य- विवरण पर विवरण के साथ उत्तर देता है , लेकिन अब एक रजिस्ट्री कुंजी है, HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)जिसका उपयोग किसी एकल सिस्टम के लिए MAX_PATH सीमाओं को हटाने के लिए किया जा सकता है। लेख में Computer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long pathsसंगठन या समूह-व्यापी कार्यान्वयन के लिए समूह नीति नियंत्रण के लिए समर्थन का उल्लेख किया गया है।


मेरे पास पूरी तरह से परीक्षण के लिए समय नहीं है, लेकिन मैंने अब तक इस समाधान के साथ मिश्रित परिणाम देखे हैं, और यह पुष्टि नहीं कर सकता है कि यह विंडोज [फ़ाइल] एक्सप्लोरर के लिए समस्या को हल करता है।
जिमनीम

2
यह फ़ाइल एक्सप्लोरर में काम नहीं करता है, हालांकि सिस्टम और NTFS लंबे रास्तों को संभाल सकते हैं, एक्सप्लोरर तब तक नहीं कर सकता जब तक कि यह खुद को फिर से कोडित नहीं करता है।
ingyhere

पुनश्च, आपको वास्तव में इसे काम करने के लिए एक्सप्लोरर के शीर्ष पर इस एसओ लिंक में एक कॉपी प्रोग्राम का उपयोग करना होगा।
पहुंचना

1
अच्छी जानकारी! मैं शायद उस मामले में सिर्फ रोबोकॉपी से चिपका रहूंगा।
जिमनेम डे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.