Soru Pencere 256 karakter yol adı sınırlaması


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.


15
2017-07-23 14:15


Menşei


Endişe etmeliyim ki, bir yolun ne kadar uzun olması gerektiğine dair sabit kodlanmış bir fikre sahip eski programlar var, böylece onları daha uzun yollarda kullanmaya çalışırsanız, ilginç şekillerde patlayacaklar. - dsolimano


Cevaplar:


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).


17
2017-07-23 17:16



Eh, Win7 Windows Explorer bile geleneksel API kullanıyor gibi görünüyor! Ne yazık.
Daha fazla ters eğik çizgi '\\? \ `:-) - Ring Ø
@ Gilles, micros ~ 1 ve micros ~ 2 sistemlerde standardize mi, yoksa rastgele mi? - Pacerier
@Pacerier Hangi dizin oluşturulduysa ilk alınır micros~1Bu yüzden aslında rastgele. - Gilles


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


0
2017-07-23 14:20



lol ... Bu günlerde hepimiz bu süper duper FAT32'yi 256 chars uzun dosya adıyla aldığımızı hatırlıyorum. Bu harikaydı (bu günlerde) ve bu dosya adı sınırlamalarını gerçekten şaşırtabiliyorum. bunlar günler. 2010! Windows gerçekten çok ...


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)


0
2017-08-31 17:31