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

17063
hari

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

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

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

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

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

27
http://answers.microsoft.com/en-us/windows/forum/windows_7-files/why-cant-i-create-a-folder-with-name/23c86662-4988-4c7d-9c2d-3e33d4413de3 Steve Robbins 11 лет назад 6

9 ответов на вопрос

32
JMD

«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 14 лет назад 0
«Если мы не используем программное обеспечение для переименования». О цитируемой части, как «программное обеспечение для переименования» может обойти то, что по сути является ограничением ОС Sathya 14 лет назад 0
Ты поймал меня. Я скептически отношусь к тому, что любое «переименовывающее программное обеспечение» может это сделать. Но если это возможно, я бы беспокоился о возможности открыть или даже переместить файл. Как вы сказали, ОС собирается с этим справиться. JMD 14 лет назад 1
Главный список находится по адресу http://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 14 лет назад 11
@ Сатья, пожалуйста, попробуйте эту команду самостоятельно, так как она переносит ту же ошибку, что и беспокойство ОП по поводу "con": `ren foo.txt err`. «err» не является зарезервированным * именем устройства *, но, тем не менее, оно зарезервировано. :) JMD 14 лет назад 0
@Sathya: с помощью [префикса \\? \ (Http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx#win32_file_namespaces) обойти синтаксический анализ имени файла. Например, «\\? \ C: \ con \ nul.txt». grawity 12 лет назад 1
12
Pablo Santa Cruz

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

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

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

как ранее заявлено. это зарезервированное слово из 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
user1662177

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

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

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

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

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

3
RafaSashi

В дополнение к ответу Пабло Санта-Круза, здесь приведен полный список ключевых слов, используемых 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
Regent

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

Например:

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

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

0
Synetech

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

0
Mehper C. Palavuzlar

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

copy con output.txt 

Так что это зарезервированное слово и не может использоваться в качестве имени папки в Windows.

0
bwDraco

Как уже упоминалось, вы можете создавать и управлять файлами и папками с зарезервированными именами в командной строке, используя пространство имен устройства или имени файла, например \\.\C:\NUL, но посмотрите, что происходит, когда вы пытаетесь получить доступ к такому файлу или папке через проводник Windows:

Error opening folder named NUL Error deleting folder named NUL

Любой доступ к объекту с зарезервированным именем устройства рассматривается как относящийся к устройству, указанному этим именем, если только вы не используете вышеупомянутый обходной путь пространства имен. Эти ошибки возникают из - за Windows, пытается работать на них, как будто они были обычные папки, но вы не можете открыть устройство с именем NUL, CONили иным образом в качестве папки-отсюда Incorrect functionошибки (которая похожа на Inappropriate ioctl for deviceошибку на Linux).

Вы немного перепутали терминологию. `\\. \…` Является [* Win32 ** устройством ** пространства имен *] (http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx#win32_file_namespaces), `\\? \…` - это [* Win32 ** имя файла ** (также для папок) пространства имен *] (http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29. aspx # win32_device_namespaces) и `\\ compname \…` - это [* UNC (** сеть **) путь *] (http://en.wikipedia.org/wiki/Uniform_Naming_Convention#Uniform_Naming_Convention). Synetech 11 лет назад 3
@Synetech: исправлено. bwDraco 11 лет назад 0