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:\Dir1
içinC:\D
- Şu yöne rotayı ayarla
C:\D\
- yeniden adlandırma
C:\D\Dir1
iç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:\Dir1
için C:\Dir1\Dir1\Dir1…
veya C:\Users\Bob\Desktop\New Folder
iç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\Dir1
için, en içteki yolun uzunluğu Dir1
22'dir. Ancak, en dıştaki yolun uzunluğu Dir1
sadece 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_PATH
ve 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, NtfsDisable8dot3NameCreation
seçenek ayarlandığında Windows 7 Explorer'ın “çok uzun yolları” nasıl kullandığını bulmaktır .