Windows'ta neden bir klasörü veya 'CON' adını veremiyorum?


30

Windows'un tüm sürümlerinde, bir dosyayı veya klasör adını CONüçüncü taraf dosya yeniden adlandırma yazılımı olmadan yeniden adlandıramıyoruz. Bunu Windows 7'de yapmaya çalışmak bir hatayla sonuçlanır:

Belirtilen cihaz adı geçersiz.

con.txtNot Defteri'nde bir dosyayı kaydetmeye çalışmak da benzer bir hataya yol açar:

Bu dosya adı Windows tarafından kullanılmak üzere ayrılmıştır.
Başka bir isim seçin ve tekrar deneyin.

CONWindows'ta neden bir dosya veya klasörü adlandıramıyoruz ?


Yanıtlar:


35

"con", bir sistem I / O cihazının adıdır, konsol.

  • aleyhte
  • yanılmak
  • nul

Ve birkaç diğerleri, sanırım.

Eski günlerde DOS'ta dosya oluşturmak yaygındı (ve bunu hala zaman zaman yapıyorum):

C:\>copy con foo.txt
I'm typing some text here.
^Z
    1 file(s) copied.
C:\>

Küçük bir düzeltme: err ayrılmış değil. Ayrılmış aygıt adlarının tam listesi: con, nul, prn, com1..9 ve lpt1..9. Herhangi bir uzantıyla (örneğin con.txt) kullanıldığında bile rezerve edilmişlerdir .
efotinis

"yeniden adlandırma yazılımı kullanmadıkça" Alıntılanan bölüm hakkında, "yeniden adlandırma yazılımı" nasıl bir işletim sistemi sınırlaması olduğunu
çözüyor

1
Beni yakaladın. Herhangi bir "yeniden adlandırma yazılımı" bile yapabilir şüpheci. Ama eğer yapabilirse, dosyayı açabilmek veya hatta taşıyabileceğim için endişeleniyorum. Dediğiniz gibi, işletim sistemi bununla ilgilenecek.
JMD

11
Ana liste msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx adresindedir . Bir dosya adı için aşağıdaki ayrılmış cihaz adlarını kullanmayın: CON, PRN, AUX, NUL, COM1 , COM2, COM3, COM4, ​​COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 ve LPT9'u içerir. Ayrıca hemen bir uzantı tarafından takip edilen bu adlardan kaçının; örneğin, NUL.txt önerilmez.
shf301

1
@Sathya: Dosya adının ayrıştırılmasını atlamak için \\? \ Ön ekini kullanarak. Örneğin, "\\? \ C: \ con \ nul.txt".
Grawity

13

CONWindows'ta ayrılmış bir addır. Yani vardır PRN, AUX, NUL, LPT1ve diğerleri.


2
CON konsol için kısa. Bir komut istemi penceresi açın, bir metin dosyasına sahip bir dizine gidin ve "copy file.txt con" yazın. Metin dosyasının içeriğini konsola
yazacaktır

12

bu cevabı bir kopyaya verdim ve referans için buraya göndereceğimi düşündüm:

Daha önce de belirtildiği gibi. CONSole cihaz için MS-DOS'ta ayrılmış bir kelimedir (hatırlayabildiğim kadarıyla). ancak, sizin için klasör oluşturmak için windows / dos zorlayabilirsiniz . cihazlar için, \\.\[RESERVED_WORD]"dosya" ya erişmek için bu formatı kullanır (bu cihazlar iletişim için dosya kullanırlar). pencereleri klasörünüzü oluşturmaya zorlamak mkdir [RESERVED_WORD]için aşağıdakileri yapın:

mkdir \\.\[absolute path to folder of choice, including drive letter]\[RESERVED_WORD]

örneğin, masaüstümde CON klasörü oluşturmak

mkdir \\.\C:\Users\me\Desktop\CON

Klasörü silmek için, aynı şekilde başvuruda bulunmanız gerekir, yoksa çalışmaz.

rmdir \\.\C:\Users\me\Desktop\CON

Benim tavsiyem, sadece farklı bir isim kullanmak. Her zaman mutlak yolu ile atıfta bulunmak çok zor olurdu, özellikle dağıtmayı planladığınız bir uygulama geliştiriyorsanız.



3

Pablo Santa Cruz'un cevabına ek olarak , burada Windows tarafından dahili olarak kullanılan ve rezerve edilen anahtar kelimelerin tam listesi bulunmaktadır. Aşağıdakilerin tümü büyük / küçük harf duyarlı değildir

  • CON
  • PRN
  • AUX
  • COM1, COM2, COM3, COM4, ​​COM5, COM6, COM7, COM8, COM9, COM0
  • LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9, LPT0

Sen kullanabilirsiniz _conyerine


2

Herhangi bir özel yazılım kullanmadan, sadece komut istemini yeniden adlandırabilirsiniz:

Örneğin:

C:\>echo Test > \\?\C:\con
C:\>type \\?\C:\con
Test
C:\>rename \\?\C:\con test.txt
C:\>type test.txt
Test

\\?\Tam yoldan sonra belirtilmelidir.


0

Tıpkı bir dosya adında kullanılamayan karakterler olduğu gibi , rezerve edildikleri için kullanılamayan birkaç kelime (tüm dosya adları) da vardır.


0

copy conbir metin dosyası oluşturmanın arkaik (MS-DOS) yöntemidir. Örneğin:

copy con output.txt

Bu nedenle ayrılmış bir kelimedir ve Windows'ta klasör adı olarak kullanılamaz.


0

Belirtildiği gibi, komut satırında ayrılmış adlara sahip dosyaları ve klasörleri oluşturabilir ve üzerinde değişiklik yapabilirsiniz; \\.\C:\NULancak böyle bir dosya veya klasöre Windows Gezgini ile erişmeye çalıştığınızda ne olduğuna bakın:

NUL adlı klasör açılırken hata oluştu NUL adlı klasör silinirken hata oluştu

Ayrılmış bir ad alanı geçici çözümü kullanmazsanız, ayrılmış bir aygıt adı olan bir nesneye erişim, bu adla belirtilen aygıta atıfta bulunulur. , Windows normal klasörler sanki onlara yapmaya çalışırken nasıl çünkü bu hataları meydana ancak adlı bir cihaz açamaz NUL, CONya da başka şekilde bir klasör dolayısıyla olarak Incorrect function(benzer hata Inappropriate ioctl for deviceLinux üzerinde hata).


3
Terminolojiyi biraz karıştırdın. \\.\…Bir Win32 aygıt ad alanı , \\?\…bir Win32 dosya adı (ayrıca klasörler için) ad alanı ve \\compname\…bir UNC ( ) yoludur .
Synetech

@ Synetech: Düzeltildi.
bwDraco 26:12
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.