Windows 7'de neden “._.” Klasörünü adlandırmak mümkün değil?


74

Bir klasörü ._.adlandırmanın mümkün olmadığını fark ettim - bunun ._yerine adlandırılmış . Bazen, adlandırmadan hemen sonra kaybolur, ancak görünümü yeniledikten sonra yeniden görünür. Windows, dosya adının sonundaki noktalarla ilgili bir sorun yaşıyor gibi görünüyor - neden bu?


21
Kayda değer , Windows'ta bir dosya adı başlatmak için "kesmek" ile karşılaştığınızdır ..
jpmc26

8
@BuNameBetterBeAvailable Untested, ancak cd -- -_-muhtemelen işe yarayabilir. Bu --ortak bir "seçeneklerin sonu" işaretidir.
TripeHound

13
@BuNameBetterBeAvailable Hayır, --kendi başına " seçeneklerin sonu, -değişmez bir değer olarak başlayan her şeyi ele al " anlamına gelir . Sadece test edildi: mkdir -- -_-ve cd -- -_-beklediğim gibi çalışıyor.
TripeHound

2
Alternatif olarak, ./-_-aynı zamanda çalışması gerekir.
glglgl

5
@Alexander Linux'ta, yorumların gittiği yer olduğu anlaşıldığı için cd "-_-", kabuk, gruplama için alıntıları kullanır, ancak onları argümanın bir parçası olarak değerlendirmez; hatalarinvalid option
Izkata

Yanıtlar:


123

Windows normalde dosyalarının uzantısı veya en az bir karakter uzunluğunda bir uzantısı olmasını gerektirir; sıfır uzunluktaki uzantılarla, yani bitecek dosya adlarıyla hiç hoş değil .. Klasörlerin de uzantıları olabilir, bu nedenle Windows, adlarının a ile bitmesine izin vermez .. DavidPostill'in bağladığı makaleden kaynak :

Temel dosya adını bir dizin veya dosya adındaki uzantıdan ayırmak için bir nokta kullanın .

(Benimkine vurgu yapar.) Noktalı bir dosyayı veya dizini sonlandırmaya çalışırsanız, Windows yalnızca bir uzantı istemediğinizi varsayar ve mdkomut isteminde oluştursanız bile kaldırır .

Tehlikeli bölge! Bir klasör adının bitmesini .istiyorsanız, sihirli ham ad geçersiz kılma sırasını kullanmanız gerekir \\?\. Komut isteminde, md \\?\C:\path\to\container\._.gerçekten de adlandırılmış bir klasör oluşturur ._., ancak birçok programda Explorer bile olsa sorun yaşar:

._.  sorunlar

Bu tür bir dizin ancak rdarkasından \\?\adı çıkarılarak kaldırılabilir veya kısa dir /xadıyla (8.3 ) yazılarak yeniden adlandırılabilir .


1
Ayrıntılı cevabınız için teşekkür ederiz! :) Bunun içindeki şifreler gibi gizli şeyleri gizlemek için mükemmel bir klasör olacağını düşünüyorum, çünkü klasörü ilk önce yeniden adlandırırsanız açabilirsiniz, ve herkes onu nasıl yeniden adlandıracağını bilmiyor.
Kara

19
@EdwardBlack yığın değişimini okuyabilecek hiç kimseyi durduramazdı (ve bu nedenle varsayımsal küçük kardeşe karşı güven bile sağlamaz). Tarafından verilen ad dir /xoldukça kolay ve bu adın kullanışlı olduğu başka zamanlar da var.
Chris H,

11
FWIW, Cygwin'in komut satırı araçları da Windows 7'de sihirli bir dizilim kullanmadan bu tür dizinler oluşturabilir (ve değiştirebilir).
Steve Jessop

4
@EdwardBlack Chris H'nin dediği gibi, bu çok gizli değil, bu yüzden böyle bir klasörde özellikle önemli bir şeyi saklamamalısınız. Dahası, dijital gizlilik ve koruma, defalarca çözülmüş bir sorundur. Gizli klasör adlarına güvenmeden işleri güvende tutmak için istediğiniz sayıda şifreleme yöntemi ve programı kullanabilirsiniz.
Kris Harper,

3
Nitpick: En azından 8.3 günde (NTFS'de diske ne yazdığını araştıramadım), periyot hiçbir zaman ilk önce diske yazılmadı. İsim isim ve uzantıya bölündü, ayrı ayrı depolandılar. Okuduktan sonra adı aldı ve bir uzantı varsa döneme ve adın uzantısına eklenmiş. Böylece, onu ifade etmenin bir yolu yoktu. Dizin yapısında, elbette izleyen noktayı kaybettiniz.
Loren Pechtel

22

Windows, dosya adının sonundaki noktalarla ilgili bir sorun mu var? Bu neden?

Boşluk veya dönem içeren bir dosya veya dizin adını sonlandırmayın. Temel dosya sistemi bu isimleri desteklese de, Windows kabuğu ve kullanıcı arayüzü desteklememektedir.

Aşağıdaki kaynak link isimlendirme kuralları hakkında daha fazla ayrıntıya giriyor.

Kaynak Dosyalarını, Yollarını ve Ad Alanlarını Adlandırma


5
Bu hala bana böcek gibi geliyor.
ralu

@ralu Bir hata ise, MS onu düzeltmekte tamamen ilgisiz görünmektedir. Bu kısıtlamalar, Windows XP'den beri (daha önce değilse) yapıldı.
DavidPostill

Windows XP? Tahminime göre, bu kısıtlamaların kökleri MS-DOS 0.x'te. - Bay Gates'den sorunu çözmesini isteyelim ...
Christian Severin

17

Bu bir hata değil. Uyumluluk sorunlarını önlemek için tasarım gereğidir.
Eski DOS günlerinden kalanlar.

FAT12 (disket) ve FAT16 dosya sistemlerinde (Windows 95'te tanıtılan uzun dosya adı desteğinden önceki FAT16) yalnızca dosya adları 11 bayt:
8 ad, uzantı için 3 bayt. İsim ve uzantı arasındaki "dönem" bile kaydedilmedi. Bu ima edildi ve görüntüleme amacıyla otomatik olarak eklendi.
Dizinlerde uzantı yoktu. Bunun yerine, uzantı için 3 bayt "$" karakteriyle dolduruldu (gerçek adlarda yasadışıydı).
Windows bu Explorer ile hala uyumlu olduğundan ve diğer birçok Windows bileşeni, uyumluluk sorunları oluşturmamak için takip süresinin sessizce kaybolmasını sağlar.
Diğerlerinin de belirttiği gibi, bu klasörleri RAW anlamını kullanarak (mutlak yol adından önce \\? \ Öneki) kullanabilirsiniz.
Sahnelerin arkasında NTFS ve ağ dosya sistemlerinde bu tür dosya ve klasörlerle bir sorun yoktur. Sadece Explorer, kullanıcının diğer yazılımlar için sorunlara yol açabilecek bir şey yaratmasını önlemeye çalışıyor.

(Aslında, başka sol artıklar da var:
COM, COM1, COM2, AUX, PRN, LPT, LPT1, LPT2, LPT3, CON gibi dosya adları, Explorer ve diğer birçok Windows parçasının kafasının karışması gibi benzer sorunlara neden olabilir. Çünkü bu isimler "DOS" döneminden de çıkmış "ayrılmış" isimlerdir.)


3
Saklanmayan nokta ile ilgili başlangıçta incred olan diğer okuyucular için: Bu, CP16 / FAT ve FAT16 ve FAT32 dahil olmak üzere tüm FAT sürümleri için doğru .
Ben N

1
Bazı eski DOS programlarını hatırlıyorum (gerçek DOS üzerinde çalışıyor, muhtemelen doğrudan INT13 işlevlerini kullanıyor) bir şekilde bir: a: foo.bar c: drive ...
rackandboneman

2
@BenN: Aslında, FAT32'de biraz farklı; hem kısa bir dosya adı (hem de geriye doğru uyumlu adlarla "örtük nokta" olan 8 + 3 bayt), ayrıca 255 UCS-2 karakterinden oluşan, açık nokta içeren uzun bir dosya adı (LFN olarak adlandırılır), 16 bit uygulamalarla çalışıyorsanız, daima LFN ile çalışırsınız.
Matteo Italia

1
@MatteoItalia Uzun dosya adlarının sahte dosya girişlerinde tutulduğunu anlıyorum; Bilinen Windows kurulumları bu girişleri arar ve mümkünse SFN yerine bunları oluşturur. Bkz Raymond Chen'in konuda yazı veya yukarıda bağlantılı FAT32 formatı spec VFAT parçasını.
Ben N

1
-1 dizin uzantıları hakkında yanılıyorsunuz; belki de CP / M için doğruydu ( hafızam bu işletim sistemi konusunda berbattı), ancak DOS zamanlarımdan beri ağacımda "programm.ing" dizinini kullanıyorum ve win.tue.nl/~aeb/linux/ adresini ziyaret edin. fs / fat / fat-1.html - dizin girdileri tam olarak dosya biçiminde ele alınır, 8.3 adı da olabilir. Sınama: bir 8.3 dizini ( mkdir testfile.name) oluşturun ve DOS adını Windows'ta görüntüleyin ( dir /x) - TESTFI~1.NAMbeklendiği gibi elde edersiniz .
vaxquis

3

Buradaki sorun, Windows'un (DOS) FAT dosya sistemlerinde 8.3 dosya adına izin vermesidir. Anlamı, 8 karakter, ardından a. üç karakter izledi. Unix ve Linux, / ve \ 0 dışında herhangi bir karaktere izin verir. 0, C karakter dizgisi sonlandırıcıdır ve / dizin ayırıcıdır. Her şey kullanılabilir.

Windows 95, uzun dosya adları (LFN) meta verileri için kısa (8.3) dosya adlarını içeren bir veritabanını tutarak bu sorunu çözdü. Windows 95 işletim sistemi dosyalarınızı sildiyseniz, sonraki Windows 95 yüklemenizde diskte garip bir şekilde adlandırılmış dosyalar kalır. Örneğin, "Belgelerim", diskteki MYDOCU ~ 1 olarak adlandırılabilir. Açıkçası, meta-verileri kaybettiyseniz, bunları kolayca dönüştüremezsiniz.

Kabuk, MS-DOS günlerinden bu yana takılan birçok tarihsel artışla başa çıkmak zorunda.

Bu yardımcı olur umarım


1
Gerçekten de bir veritabanı yoktu; Windows, uzun dosya adının bölümlerini diske sahte dosyalar olarak sıkıştı. Konuyla ilgili Raymond Chen'in gönderisine bakın .
Ben N
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.