Почему я не могу назвать папку или файл «CON» в Windows?


30

Во всех версиях Windows мы не можем переименовать файл или имя папки, как CONбез стороннего программного обеспечения для переименования файлов. Попытка сделать это в Windows 7 приводит к ошибке:

Указанное имя устройства недействительно.

Попытка сохранить файл, как con.txtв блокноте, приводит к аналогичной ошибке:

Это имя файла зарезервировано для использования Windows.
Выберите другое имя и попробуйте снова.

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


Ответы:


35

«con» - это имя системного устройства ввода-вывода, консоли.

  • против
  • заблуждаться
  • NUL

И пару других, я думаю.

В старые времена в 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

«если мы не будет использовать переименование программного обеспечения» О цитируемых частях, как сделать «переименование программного обеспечения» получить вокруг того, что является по существу OS limitatiom
Sathyajith Бхат

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».
Гравитация

13

CONэто зарезервированное имя в Windows. Таковы PRN, AUX, NUL, LPT1и другие.


2
CON это сокращение от консоли. Откройте окно командной строки, перейдите в каталог с текстовым файлом и введите «copy file.txt con». Он запишет содержимое текстового файла в консоль (окно командной строки)
Keltari

12

я дал этот ответ дубликату, и думал, что выложу его здесь для справки:

как ранее заявлено. это зарезервированное слово из MS-DOS для консольного устройства (насколько я помню). но вы можете заставить 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.