Bu aslında düzeltmek için oldukça basittir. Dizin yapısının şöyle olduğunu söyleyin:
C:\Dir1\Dir1\Dir1\Dir1…
Bunu düzeltmek için, her klasörü silmek için artık çok uzun olmayana kadar bir karakterli bir klasör adına yeniden adlandırın:
- yeniden adlandırma
C:\Dir1içinC:\D
- Şu yöne rotayı ayarla
C:\D\
- yeniden adlandırma
C:\D\Dir1içinC:\D\D
- Şu yöne rotayı ayarla
C:\D\D\
- Toplam yol uzunluğu <260 olana kadar Goto 1
İşte işlemi otomatikleştirmek için bir toplu iş dosyası (bu basit sürüm, özellikle tek kullanımlık olanlar için, soruda açıklananlar gibi basit dizinler için en iyisidir). (Örneğin olası o en yüksek klasörü iletin C:\Dir1için C:\Dir1\Dir1\Dir1…veya C:\Users\Bob\Desktop\New Folderiçin 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
Teknik Açıklama
Önerilen diğer çözümler geriye doğru; En içteki dizinden dışa doğru çalışarak düzeltemezsiniz, diğer yöne gitmeniz gerekir.
Bir dizine erişmeye çalıştığınızda, açıkça veya olmasın, bundan önce gelen her şeyi içeren mutlak yolunu kullanırsınız. Bu nedenle, gibi bir dizin yapısı C:\Dir1\Dir1\Dir1\Dir1için, en içteki yolun uzunluğu Dir122'dir. Ancak, en dıştaki yolun uzunluğu Dir1sadece 7'dir ve bu nedenle, içeriğinden bağımsız olarak (belirli bir yönetmenin yolu bağlamında) hala erişilebilir durumdadır. dosya sistemi ne içerdiğini veya alt dizinlerinin toplam yol uzunluğu üzerindeki etkisini bilmiyor; yalnızca dizin dizinleri - toplam yol uzunluğu çok uzunsa bir dizini yeniden adlandıramazsınız).
Bu nedenle, çok uzun bir yolla karşılaştığınızda yapmanız gereken, mümkün olan en yüksek seviyeye gitmek ve onu tek karakterli bir adla yeniden adlandırmak ve buradaki her seviye için tekrarlamaktır. Bunu her yaptığınızda, yolun toplam uzunluğu eski ad ile yeni ad arasındaki farkla kısalır.
Bunun tersi de geçerlidir. Desteklenen maksimum uzunluktan daha büyük bir yol oluşturamazsınız (DOS ve Windows'ta MAX_PATH = 260). Ancak, en içten dışa doğru çalışan dizinleri daha uzun bir adla yeniden adlandırabilirsiniz. Sonuç, mutlak yolu> 260 olan daha derin klasörlere erişilemez olmasıdır. (Bu onları “gizli” ya da güvenli kılmaz, çünkü elde edilebilecek kadar basitler, bu nedenle dosyaları gizlemek için bu yöntemi kullanmayın.)
İlginç Yan Not
Windows 7 Explorer'da klasörler oluşturursanız, Explorer, toplam uzunluktan daha uzun MAX_PATHve gerçekte olduğu gibi alt dizinler oluşturmanıza izin veriyor gibi görünebilir , ancak aslında "DOS 8.3 dosya isimleri" kullanılarak hile yapıyor. Bunu, aşağıdaki gibi bir ağaç oluşturarak görebilirsiniz:
C:\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\
Bu, 696 karakter uzunluğunda, hangisi 260'tan daha uzun, tabii ki. Gezginin en içteki alt dizinine giderseniz, odakta değilken, adrese tıkladığınızda adres çubuğunda beklendiği gibi gösterir. çubuğunda, yolu C:\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\yalnızca 102 karakter uzunluğunda olan değiştirir.
XP'de bunu yapmaz, bunun yerine desteklenenden daha uzun bir yol oluşturmayı kararlılıkla reddeder.
Gerçekten ilginç olan, NtfsDisable8dot3NameCreationseçenek ayarlandığında Windows 7 Explorer'ın “çok uzun yolları” nasıl kullandığını bulmaktır .