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


17

Uzun bir araştırmadan sonra, nihayet en son Microsoft Windows 7'de bile yol adlarının 256 karakterden uzun olamayacağını öğrendim. NTFS ~ 32.000 karakter yolunu işleyebildiğinden neden bu kadar aptal bir sınırlama olduğunu anlamıyorum. bir düzineden fazla bir süredir sorunsuz bir şekilde! Bunu değiştirme imkanı yok mu? Yoksa bundan kaçınmak için pratik çözümler var mı?

260 karakter, uzun dosya adlarına sahip bazı iç içe geçmiş fotoğraf dizinleri gibi basit kullanım durumları için bile çok azdır.


1
Endişeleniyorum ki, bir yolun ne kadar uzun olması gerektiğine dair sabit kodlanmış bir fikri olan eski programlar var, böylece onları daha uzun yollarda kullanmaya çalışırsanız, ilginç yollarla patlayacaklar.
dsolimano

Linux işletim sistemlerinde bu sorun var mı?
ahorn

Yanıtlar:


18

Microsoft'a göre:

  • Geleneksel Windows API, en son sürüm için geliştirilen uygulamalar için bile yol adlarını 260 karakterle sınırlar.

  • Unicode uyumlu API kullanan uygulamalar, 32767 karaktere kadar izin veren bir yol formu kullanabilir. Dosya adının önüne önek \\?\gelmeli ve mutlak bir yol olmalıdır, örn., \\?\c:\dir\fileVeya \\?\UNC\server\share\file. Başka sınırlamalar da vardır, ayrıntılar için referansa bakın.

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:

  • Sembolik bağlantılarmklink oluşturmak için komutu kullanın ve bunları uygulamanıza kullanan bir yol iletin.

  • substBir dizine bir sürücü harfi atamak için komutu kullanın .

  • Uygulamanızı derin bir dizinden başlatın ve kısa göreli yolları iletin.

  • Onların 8,3 takma adları (bazı uzun isimler yerine micros~1varsa o hala Windows 7'de mevcut varsayarak) micros~1yanında micros~2, ben hangisinin hangisi nasıl söyleyeceğimi bilemiyorum; belki DOS'u çalıştırın command.com(yine, Windows 7'nin hala yapabileceğini varsayalım).


3
Win7'deki Windows Gezgini bile geleneksel API kullanıyor gibi görünüyor! Ne yazık.

3
Daha fazla ters eğik çizgi `\\? \` :-)
Yüzük Ø

@Gilles, micros ~ 1 ve micros ~ 2 sistemlerde standart mı yoksa rastgele mi?
Pacerier

@Pacerier İlk olarak hangi dizin oluşturulduysa micros~1, bu nedenle rastgele olur.
Gilles 'SO- şeytan olmayı bırak'

0

Tüm klasörleriniz ve dosyalarınız için kısa (8.3) adları kullanabilirsiniz.

Yine de etkin olduklarından emin olmanız gerekir.

Uzun bir dosya adı, kısa MS-DOS (8.3 olarak da bilinir) 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 depolar; bu , belirli dosya sistemine bağlı olarak performans nedeniyle sistem çapında devre dışı bırakılabilir . Uzun bir dosya adı oluşturduğunuzda, Windows ayrıca 8.3 diğer adı olarak adlandırılan kısa bir 8.3 biçimi oluşturabilir ve bunu diskte de depolayabilir. Bu 8.3 takma ad, belirli bir birim için devre dışı bırakılabilir.

(cesurum)

Uzun addan kısa adı almak için de bazı kodlar yazmanız gerekir.

Kaynak


2
lol ... Ben de Windows 95 bu günlerde 256 chars uzun dosya adları ile bu süper kandırılan FAT32 var hatırlıyorum! Bu (bugünlerde) harikaydı ve dosya adı sınırlamalarının bu günlerde hala bir sorun olabileceğinden gerçekten şok oldum . 2010! Windows gerçekten arkaik ...

0

Uzunluk bir bayt olarak depolandığından, NTFS'deki dosya / dizin adı 255 unicode kod noktasıyla sınırlıdır. Ancak toplam yol uzunluğunun doğal bir sınırı yoktur.

Birçok Win32 API çağrısı (explorer kabuğu dahil) çağrısının 260-1 uzunluk sınırı vardır. Diğer bazı çağrılar 32K'ye kadar almak için \\? \ Önekini kullanabilir (birim adı Çekirdek ülkesinde değiştirildiği için biraz daha az)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.