यह वास्तव में ठीक करने के लिए काफी सरल है। यह कहें कि निर्देशिका संरचना इस प्रकार है:
C:\Dir1\Dir1\Dir1\Dir1…
इसे ठीक करने के लिए, प्रत्येक फ़ोल्डर को एक-वर्ण फ़ोल्डर-नाम पर तब तक नाम बदलें जब तक कि उसे हटाने के लिए बहुत लंबा समय न हो:
- नाम बदलें
C:\Dir1
करने के लिएC:\D
- पर जाए
C:\D\
- नाम बदलें
C:\D\Dir1
करने के लिएC:\D\D
- पर जाए
C:\D\D\
- गोटो 1 जब तक पथ की कुल लंबाई <260 है
यहां प्रक्रिया को स्वचालित करने के लिए एक बैच फ़ाइल है (यह सरल संस्करण सरल निर्देशिकाओं के लिए सबसे अच्छा है, जैसे प्रश्न में वर्णित एक विशेष रूप से डिस्पोजेबल वाले के लिए)। इसे उच्चतम संभव फ़ोल्डर पास करें (उदाहरण के C:\Dir1
लिए C:\Dir1\Dir1\Dir1…
या इसके C:\Users\Bob\Desktop\New Folder
लिए C:\Users\Bob\Desktop\New Folder\abcdefghi…
)
@echo off
if not (%1)==() cd %1
for /D %%i in (*) do if not %%i==_ ren "%%i" _
pushd _
%0
popd
तकनीकी व्याख्या
अन्य प्रस्तावित समाधान पीछे की ओर हैं; आप अंतरतम निर्देशिका से अपने तरीके से काम करके इसे ठीक नहीं कर सकते हैं, आपको दूसरी दिशा में जाने की आवश्यकता है।
जब आप किसी निर्देशिका तक पहुंचने का प्रयास करते हैं, तो आप इसके पूर्ण पथ का उपयोग करते हैं चाहे वह स्पष्ट रूप से हो या न हो, जिसमें वह सब कुछ शामिल है जो इससे पहले आया था। इसलिए, जैसे एक निर्देशिका संरचना के C:\Dir1\Dir1\Dir1\Dir1
लिए, अंतरतम पथ Dir1
की लंबाई 22 है। हालांकि, सबसे बाहरी पथ की लंबाई Dir1
केवल 7 है, और इसलिए इसकी सामग्री की परवाह किए बिना अभी भी सुलभ है (किसी दिए गए निर्देशिका पथ के संदर्भ में) , फ़ाइल-सिस्टम को यह पता नहीं है कि इसमें क्या शामिल है या इसके बाल निर्देशिकाओं की कुल पथ लंबाई पर इसका क्या प्रभाव है, केवल इसके पूर्वजों की निर्देशिका-यदि आप किसी निर्देशिका का नाम नहीं बदल सकते हैं यदि कुल पथ-लंबाई बहुत लंबी होगी)।
इसलिए, जब आप एक रास्ता बनाते हैं, जो बहुत लंबा है, तो आपको जो करने की आवश्यकता है वह उच्चतम स्तर पर जाना है और इसे एक-वर्ण नाम में बदलना है और प्रत्येक स्तर के लिए दोहराना है। हर बार जब आप ऐसा करते हैं, तो पथ की कुल लंबाई पुराने नाम और नए नाम के बीच के अंतर से कम हो जाती है।
विपरीत भी सच है। आप एक पथ नहीं बना सकते जो अधिकतम समर्थित लंबाई (डॉस और विंडोज पर MAX_PATH = 260
) से अधिक हो। हालाँकि, आप निर्देशिकाओं का नाम बदलकर, अंतरतम जावक से लंबे नाम तक काम कर सकते हैं। इसका परिणाम यह है कि गहरे फ़ोल्डर जिसका निरपेक्ष पथ> 260 है, वह दुर्गम होगा। (यह उन्हें "छिपी" या सुरक्षित नहीं बनाता है, क्योंकि वे प्राप्त करने के लिए पर्याप्त सरल हैं, इसलिए फ़ाइलों को छिपाने के लिए इस पद्धति का उपयोग न करें।)
दिलचस्प साइड नोट
यदि आप विंडोज 7 एक्सप्लोरर में फ़ोल्डर बनाते हैं, तो ऐसा लग सकता है कि एक्सप्लोरर आपको उपनिर्देशिकाएं बनाने की अनुमति देता है जैसे कि कुल लंबाई की तुलना में लंबा है MAX_PATH
, और वास्तव में यह है, हालांकि यह वास्तव में "डॉस 8.3 फ़ाइलनाम" का उपयोग करके धोखा दे रहा है। आप इसे एक पेड़ बनाकर देख सकते हैं जैसे कि निम्नलिखित:
C:\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\
यह 696 वर्ण लंबा है, जो निश्चित रूप से 260 से अधिक लंबा है। आगे, यदि आप एक्सप्लोरर में सबसे उपनिर्देशिका पर नेविगेट करते हैं, तो यह पता बार में अपेक्षित रूप से दिखाता है जब यह फोकस में नहीं होता है, लेकिन जब आप पते में क्लिक करते हैं बार, यह पथ को बदलता है C:\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\
, जो केवल 102 वर्ण लंबा है।
XP में, यह ऐसा नहीं करता है, इसके बजाय यह समर्थित होने की तुलना में अधिक लंबा रास्ता बनाने से इनकार करता है।
वास्तव में क्या दिलचस्प होगा यह पता लगाना है कि NtfsDisable8dot3NameCreation
विकल्प सेट होने पर विंडोज 7 एक्सप्लोरर "बहुत लंबे रास्ते" को कैसे संभालता है।