Чому я не можу назвати папку чи файл "CON" у Windows?


30

У всіх версіях Windows ми не можемо перейменувати ім’я файлу чи папки як CONбез програмного забезпечення для перейменування сторонніх файлів. Намагання зробити це в Windows 7 призводить до помилки:

Вказане ім’я пристрою недійсне.

Спроба зберегти файл, як con.txtу Блокноті, призводить до подібної помилки:

Це ім’я зарезервовано для використання в Windows.
Виберіть інше ім’я та повторіть спробу.

Чому ми не можемо назвати файл чи папку CONв Windows?


Відповіді:


35

"con" - це ім'я системного пристрою вводу / виводу, консолі.

  • кон
  • помилятися
  • нуль

І ще пару, я думаю.

У старі часи в DOS було звичайно створювати файл (і я все ще час від часу це роблю) за допомогою:

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

Незначна корекція: помилка не затримується. Повний список зарезервованих імен пристроїв: con, nul, prn, com1..9 та lpt1..9. Вони навіть зарезервовані при використанні з будь-яким розширенням (наприклад con.txt).
efotinis

"якщо ми не використовуємо програмне забезпечення для перейменування" Про цитовану частину, як "програмне забезпечення для перейменування" обійдеться тим, що по суті є обмеженням ОС
Sathyajith Bhat

1
Ти мене зрозумів. Я скептично налаштований, що будь-яке "програмне забезпечення для перейменування" може це зробити навіть. Але якщо це можливо, я б хвилювався про можливість відкрити або навіть перемістити файл. Як ви сказали, ОС збирається вирішити проблему.
JMD

11
Основний список знаходиться за адресою msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx Не використовуйте такі імена зарезервованих пристроїв для імені файлу: CON, PRN, AUX, NUL, COM1 , COM2, COM3, COM4, ​​COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 та LPT9. Також уникайте цих назв, за якими слідує негайно розширення; наприклад, NUL.txt не рекомендується.
shf301

1
@Sathya: Використовуючи префікс \\? \ Для обходу розбору імен файлів. Наприклад, "\\? \ C: \ con \ nul.txt".
grawity

13

CONє зарезервованим іменем у Windows. Такі PRN, AUX, NUL, LPT1та інші.


2
CON короткий для консолі. Відкрийте вікно командного рядка, перейдіть до каталогу з текстовим файлом та введіть "copy file.txt con" Він запише вміст текстового файлу на консоль (вікно командного рядка)
Keltari

12

я дав цю відповідь на дублікат, і подумав, що опублікую її тут для довідки:

як було зазначено раніше це зарезервоване слово з MS-DOS для пристрою CONsole (наскільки я пам'ятаю). але ви можете змусити windows / dos створити папку для вас . для пристроїв він використовує формат \\.\[RESERVED_WORD]для доступу до "файлу" (ці пристрої використовували файли для зв'язку). щоб змусити Windows створити вашу папку, а не робити mkdir [RESERVED_WORD], виконайте наступне:

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

наприклад, щоб створити папку CON на своєму робочому столі,

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

щоб видалити папку, вам потрібно посилатися на неї так само, інакше вона не працюватиме.

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

моя порада, хоча просто використовувати іншу назву. було б дуже важко завжди звертатися до нього через його абсолютний шлях, особливо якщо ви розробляєте додаток, яке плануєте розгортати.


4

Це тому, що він використовується для представлення "внутрішніх пристроїв". Однак ви можете створити цю папку за допомогою наступної команди в командному рядку:

C:\>md \\.\e:\con

Цю папку неможливо видалити за допомогою клацання правою кнопкою миші, видалити. Ви повинні використовувати таку команду (знову в командному рядку):

C:\>rd \\.\e:\con

Джерело: http://yhisham.blogspot.in/2012/09/mystery-about-con-folder-in-windows.html


3

Окрім відповіді Пабло Санта-Крус , ось повний перелік ключових слів, які використовує Windows внутрішньо і зарезервовано. Все наступне є нечутливим до регістру

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

Ви можете використовувати _conзамість цього


2

Ви можете перейменувати його, не використовуючи спеціального програмного забезпечення, просто командний рядок:

Наприклад:

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

Після \\?\слід вказати повний шлях.


0

Так само, як є символи, які не можна використовувати в імені файлу , також є кілька слів (цілих імен), які не можна використовувати, оскільки вони зарезервовані.


0

copy conце архаїчний (MS-DOS) метод створення текстового файлу. Наприклад:

copy con output.txt

Отже, це зарезервоване слово і його не можна використовувати як ім'я папки в Windows.


0

Як уже згадувалося, ви можете створювати та маніпулювати файлами та папками із зарезервованими іменами у командному рядку, використовуючи пристрій чи ім’я файлів, наприклад, наприклад \\.\C:\NUL, але подивіться, що відбувається при спробі отримати доступ до такого файлу чи папки через Провідник Windows:

Помилка відкриття папки під назвою NUL Помилка видалення папки під назвою NUL

Будь-який доступ до об'єкта із зарезервованим іменем пристрою трактується як посилання на пристрій, визначений цим іменем, якщо ви не використовуєте вищезазначене вирішення простору імен. Ці помилки виникають з - за Windows , намагається працювати на них , як ніби вони були звичайні папки, але ви не можете відкрити пристрій з ім'ям NUL, CONабо іншим чином в якості папки-звідси Incorrect functionпомилки (яка схожа на Inappropriate ioctl for deviceпомилку на Linux).


3
Ви трохи змішали термінологію. \\.\…це простір імен пристроїв Win32 , \\?\…це ім'я файлу Win32 (також для папок), простір імен і \\compname\…є шлях до UNC ( мережі ) .
Synetech

@Synetech: Виправлено.
bwDraco
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.