Почему я не могу назвать папку или файл «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:\>
JMD
источник
Незначительное исправление: ошибка не зарезервирована. Полный список зарезервированных имен устройств: 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

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

maranas
источник
4

Это потому, что он используется для представления «внутренних устройств». Однако вы можете создать эту папку, используя следующую команду в командной строке:

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

Эта папка не может быть удалена с помощью правого клика, удалить. Вы должны использовать следующую команду (снова в командной строке):

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

Источник: http://yhisham.blogspot.in/2012/09/mystery-about-con-folder-in-windows.html

user1662177
источник
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вместо

RafaSashi
источник
2

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

Например:

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

После \\?\того, как полный путь должен быть указан.

Регент
источник
0

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

Synetech
источник
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).

bwDraco
источник
3
Вы немного перепутали терминологию. \\.\…является Win32 , устройство пространства имен , \\?\…является Win32 - файл (также для папок) пространства имен , и \\compname\…является UNC ( сетевой ) путем .
Synetech
@Synetech: исправлено.
bwDraco