Anasayfa » nasıl » Windows Bu Klasörü Rapor Etme Neden Kopyalamak Çok Uzun?

    Windows Bu Klasörü Rapor Etme Neden Kopyalamak Çok Uzun?

    Windows ile yeterince uzun, özellikle de uzun adları olan klasörler ve dosyalar ile çalışıyorsanız, tuhaf bir hatayla karşılaşırsınız: Windows, klasör yolunun veya dosya adının yeni bir hedefe taşınmak, hatta silmek için çok uzun olduğunu bildirir. Anlaşma ne?

    Hey nasıl yapılır geek!

    Yani geçen gün bilgisayarımdaki bazı dosyaları yeniden organize ediyordum, klasörler yaratıyordum. Sonra bazı dosyaları bir klasöre taşırken, ortaya çıkan klasör yolunun çok uzun olacağını belirten bir mesaj alıyorum. Kafam karışmıştı. DOS'un Uzun Dosya Adlarını desteklediğinden beri her bir işletim sisteminin bildiğini, ancak Windows yolun çok uzun olduğunu iddia ediyor? Bu neden oluyor?

    sincerly,

    Bay dağınık

    Karşılaştığınız sorun, böyle durumlarda hata veren iki sistemin talihsiz bir kavşağıdır. Hatanın tam olarak nereden geldiğini anlamak için, Uzun Dosya Adlarının (LFN) tarihini ve çözümlere girmeden önce Windows'un onlarla nasıl etkileşime girdiğini incelemeliyiz..

    Uzun Dosya adları, Windows 95'te, temel MS-DOS mimarisi aracılığıyla tanıtıldı. Yeni LFN sistemi, 255 karaktere kadar dosya ve dizin adlarına izin verdi. Bu, önceki dosya adı sisteminin hoş bir şekilde genişletilmesiydi, bu, genellikle 8,3 dosya adı olarak adlandırıldı; çünkü ad, sekiz karakter ve üç basamaklı bir uzantıyla sınırlıydı, ancak Kısa Dosya Adı (SFN) olarak da bilinirdi. Tahmin edebileceğiniz gibi, o zamanlar hala birçok DOS tabanlı uygulama vardı ve yeni LFN'leri ve eski SFN'leri birbirleriyle güzel oynamaya çalışırken birkaç baş ağrısından fazlası vardı. Daha önce hiç durmamış dosyalarda (abcdef ~ 1.txt gibi) eski bir diskete veya CD-ROM'a rastladıysanız, dosya adı, daha uzun ve desteklenmeyen LFN'den (abcdefghijk gibi) bazı SFN kullanan eski uygulamalar tarafından kesildi. Txt).

    Bununla birlikte, 1990'ların ortasından çok uzaktayız ve bütün Uzun Dosya Adı (çoğunlukla) sıkıca ütüleniyor. Windows sürümünü son 10 yıldan kullanıyorsanız, DOS / Windows 95 günde geri döndüğümüz gibi bir dosya adı uzunluğu çakışması yaşamamış olabilirsiniz. Bununla birlikte, disk temizleme projenizde keşfettiğiniz gibi hala hıçkırıklarla karşılaşıyoruz. Ama neden? Windows'un Uzun Dosya Adı sistemi, bileşen başına 255 karaktere kadar olan klasörleri ve dosya adlarını destekliyorsa, hangi duvara giriyorsunuz? NTFS'yi (modern Windows makinelerinin büyük çoğunluğunun kullandığı dosya sistemi) NTFS'yi toplam yol uzunluğu 32.767 karaktere kadar olan klasör ve dosya adlarının zincirini destekleyeceği için suçlayamayız. Bu, çoğu kullanıcının ihtiyaç duyacağı tipik dizin yapısını aşıyor.

    Her şeyin dağıldığı yerde, LFN / NTFS sisteminin üstündeki Windows yığınlarında yapay bir kısıtlama var: MAX_PATH değişkeni. MAX_PATH değişkeni, Windows’taki eksiksiz bir dizin yapısının, sürücü harfi, iki nokta üst üste, ters eğik çizgi ve sonunda boş eğik çizgi dahil toplam 260 karakteri geçemeyeceğini belirtir. Bu nedenle, yalnızca 256 karakterlik gerçek bir MAX_PATH potansiyeline sahipsiniz, örneğin;. C: \ your-256 karakterlik-yolunu \.

    Peki, bilgisayarınızı temizlerken ne oldu, zaten uzun bir yolu olan bir klasöre sahiptiniz (ya klasör adları uzun, dosya adları uzun ya da her ikisi de) ve bir ya da daha fazlasını taşımayı denediğinizde bu dizinleri uzun yolu olan başka bir dizine, yol adının toplam uzunluğu MAX_PATH değişkeni tarafından uygulanan 260 karakter sınırını aştı..

    Şimdi, “Ah-hah! MAX_PATH değişkenini değiştireceğiz ve sorunu çözeceğiz! ”Ne yazık ki o kadar basit değil. Sadece MAX_PATH değişkeni aslında Windows'a kodlanmış zor değil, aynı zamanda onu değiştirmekle ilgili çok büyük bir güçlükten geçmiş olsanız bile, buna değmezdi. Çok fazla uygulama, yol değişkeninin Windows'un uzun zamandır belirttiği şekilde olmasını bekler. Muazzam bir karışıklık yaratmadan sadece onu değiştiremeyiz..

    Bu seni nereye bırakıyor? En basit çözüm, sadece yol verilerini düzenlemektir. Örneğin, web'den kaydetmek için kullandığınız uygulamanın / uzantının, makalenin tam adı olan bir makaleyi + makalenin öncülünü oluşturduğu bir dizini oluşturduysanız ve ardından dosya adının tam adı makalenin + makalesinin başlığında, MAX_PATH'e tek bir kaydetme ile vurmak ya da aşmak gerçekten kolay olacaktır. Bu devasa klasör ve makale başlıklarını daha makul bir boyuta getirmek, sorunu çözmenin kolay bir yoludur..

    Uzun yollu çok sayıda dosyanız varsa ve tümünü düzenlemek istemiyorsanız (veya isterseniz silmek MAX_PATH değişkeni tarafından kısıtlandığında Windows'un başa çıkması çok uzun süren eski dizinler tonu), çevresinde bir komut satırı vardır. Windows, MAX_PATH değişkeni ile sınırlandırılsa da, Windows mühendisleri, kullanıcıların daha uzun yol adlarıyla uğraşmaları gereken durumlar olacağını fark etti. Bu nedenle, Windows API’nin aşırı uzun yollarla ilgilenme işlevi vardır.

    Bu API’den yararlanmak ve istenmeyen klasörlerinizde / dosya adlarınızda komut satırı araçlarını kullanmak için, dizin adını birkaç karakter daha eklemeniz yeterlidir. Örneğin, silmek istediğiniz çok büyük bir dizin yapınız varsa (ancak denediğinizde yol uzunluğu nedeniyle bir hata aldıysanız), komutu şu şekilde değiştirebilirsiniz:

    rmdir c: \ documents \ bazı gerçekten gerçekten süper-uzun-klasör-adı şeması \

    için:

    rmdir \\? \ c: \ documents \ some-really-super-uzun-klasör-isim şeması \

    Anahtar, \\? \ dosya yolunun başlangıcından önceki kısım; bu, Windows'a MAX_PATH değişkeni tarafından getirilen sınırlamaları göz ardı etmesini ve temeldeki dosya sistemi tarafından doğrudan sağlandığı / anlaşıldığı gibi sağladığınız yolu (daha uzun bir yolu açıkça destekleyebileceğini) bildirir. Her zaman olduğu gibi, komut satırında, eksiksiz bırakmak istediğiniz dosya veya dizinleri yanlışlıkla silmemek için dikkatli olun..

    Bu konuyla ilgili genel bir bakış açısı merak ediyorsanız, başlık altında olup bitenler hakkında daha fazla bilgi için bu makaleyi Microsoft Geliştirici Ağı kütüphanesinden, Dosyalara, Yollara ve Ad Alanlarına kesinlikle ekleyin..


    Bir acil teknik sorunuz mu var? Bize [email protected] adresinden bir e-posta gönderin, cevaplamak için elimizden geleni yapacağız..