Uzun bir araştırmadan sonra, en son Microsoft Windows 7'de bile yol adlarının 256 karakterden uzun olamayacağını öğrendim. NTFS'nin neden bu kadar aptalca bir sınırlama olduğunu anlamıyorum. bir düzineden fazla yıldan beri herhangi bir sorun olmadan uzunluğu! Bunu değiştirmek için herhangi bir olasılık yok mu? Yoksa bunu önlemek için pratik çözümler var mı?
Uzun dosya adlarına sahip iç içe geçmiş fotoğraf dizinleri gibi basit kullanım durumları için 260 karakter çok az.
Microsoft'a göre:
-
Geleneksel Windows API, en yeni sürüm için geliştirilmiş uygulamalarda bile, yol adlarını 260 karakterle sınırlar.
-
Unicode uyumlu API kullanan uygulamalar, 32767 karaktere kadar izin veren bir yol biçimi kullanabilir. Dosya adı önekli
\\?\ve mutlak bir yol olmalıdır, örn.
\\?\c:\dir\file veya
\\?\UNC\server\share\file. Daha fazla sınırlama vardır, detaylar için referansa bakınız.
Derin bir dosya hiyerarşisi oluşturmayı ve kullanmayı başardıysanız ve dosya adı uzunluğu nedeniyle bombalanan bir uygulama ile çalışmanız gerekiyorsa, deneyebileceğiniz birkaç şey vardır:
-
Kullan
mklink yaratma komutu sembolik bağlantılarve bunları uygulamanız için kullanan bir yolu iletin.
-
Kullan
subst dizine bir sürücü harfi atamak için komut.
-
Uygulamanızı derin bir dizinden başlatın ve kısa göreli yolları iletin.
-
Bazı uzun adları 8.3 takma adlarına göre değiştirin (
micros~1), Windows 7'de hala var olduğunu varsayarak.
micros~1 yanında
micros~2Hangisinin hangisinin olduğunu nasıl söyleyeceğimi bilmiyorum; belki de DOS'ı çalıştır
command.com (yine, Windows 7'nin hala bunu yapabileceğini varsayarak).
Tüm klasörleriniz ve dosyalarınız için kısa (8.3) isimleri kullanabilirsiniz.
Yine de etkin olduklarından emin olmalısın.
Uzun bir dosya adı, kısa MS-DOS (8.3 adı verilen) stil adlandırma kuralını aşan herhangi bir dosya adı olarak kabul edilir. Genellikle, Windows uzun dosya adlarını diskte özel dizin girdileri olarak saklar. performans nedenleriyle sistem genelinde devre dışı bırakılabilir belirli dosya sistemine bağlı olarak. Uzun bir dosya adı oluşturduğunuzda, Windows 8.3 adının adı verilen adın kısa 8.3 formunu oluşturabilir ve diske de kaydedebilir. Bu 8.3 takma ad belirtilen bir birim için devre dışı bırakılabilir.
(cesurca)
Kısa adı uzun adı almak için de bir kod yazmanız gerekecek.
Kaynak
NTFS'deki dosya / dizin adı, uzunluk bir bayt olarak depolandığından 255 unicode kod noktasıyla sınırlıdır. Ancak, toplam yol uzunluğunun içsel bir sınırı yoktur.
Birçok Win32 API çağrısı (kaşif kabuğu dahil) çağrıları 260 - 1 uzunluk sınırına sahiptir.
Bazı diğer çağrılar, \\? \ Prefix'i 32K'ye kadar elde etme yeteneğine sahiptir (Kernel-arazinde sesin adı değiştirildiği için biraz daha az)