Windows에서 폴더 또는 파일 이름을 'CON'으로 지정할 수없는 이유는 무엇입니까?


30

모든 버전의 Windows에서 CON타사 파일 이름 바꾸기 소프트웨어없이 파일 또는 폴더 이름을 바꿀 수 없습니다 . Windows 7에서이 작업을 시도하면 오류가 발생합니다.

지정된 장치 이름이 유효하지 않습니다.

con.txt메모장에서 와 같이 파일을 저장하려고 하면 비슷한 오류가 발생합니다.

이 파일 이름은 Windows에서 사용하도록 예약되어 있습니다.
다른 이름을 선택하고 다시 시도하십시오.

CONWindows에서 파일이나 폴더의 이름을 지정할 수없는 이유는 무엇 입니까?


답변:


35

"con"은 시스템 I / O 장치 (콘솔)의 이름입니다.

  • 범죄자
  • 실수

그리고 다른 두 사람은 생각합니다.

예전에는 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 2009

"이름 바꾸기 소프트웨어를 사용하지 않는 한"인용 된 부분에 대해, "이름 바꾸기 소프트웨어"는 본질적으로 OS 제한이 무엇인지 어떻게 알 수
있습니까

1
당신은 저를 얻었다. 나는 "이름 바꾸기 소프트웨어"도 할 수 있다는 것에 회의적이다. 그러나 가능하다면 파일을 열거 나 이동할 수 있을지 걱정됩니다. 당신이 말했듯이, OS가 문제를 일으킬 것입니다.
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

CONWindows에서 예약 된 이름입니다. 그래서이다 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

내 충고는 다른 이름을 사용하는 것입니다. 특히 절대 배포하려는 앱을 개발하는 경우 절대 경로를 통해 항상 참조하기가 매우 어렵습니다.



3

Pablo Santa Cruz의 답변 외에도 다음은 Windows에서 내부적으로 사용하고 예약 된 키워드의 전체 목록입니다. 다음은 모두 대소 문자를 구분하지 않습니다

  • 범죄자
  • PRN
  • 보조
  • 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

filename 에서 사용할 수없는 문자가있는 것처럼 , 예약되어 있기 때문에 사용할 수없는 단어 (전체 파일 이름)도 있습니다.


0

copy con텍스트 파일을 작성하는 구식 (MS-DOS) 방법입니다. 예를 들면 다음과 같습니다.

copy con output.txt

따라서 예약어이므로 Windows에서 폴더 이름으로 사용할 수 없습니다.


0

언급 한 바와 같이, 장치 또는 파일 이름 네임 스페이스 (예 :)를 사용하여 명령 행에서 예약 된 이름으로 파일 및 폴더를 작성하고 조작 할 수 \\.\C:\NUL있지만 Windows 탐색기를 통해 해당 파일 또는 폴더에 액세스하려고 할 때 어떤 일이 발생하는지보십시오.

NUL이라는 폴더를 여는 중 오류가 발생했습니다 NUL이라는 폴더를 삭제하는 중에 오류가 발생했습니다.

위에서 언급 한 네임 스페이스 해결 방법을 사용하지 않으면 예약 된 장치 이름을 가진 개체에 대한 액세스는 해당 이름으로 지정된 장치를 참조하는 것으로 간주됩니다. 윈도우가 정상 폴더 인 경우로에서 작동하기 때문에 이러한 오류가 발생하지만라는 장치를 열 수 없습니다 NUL, CON또는 그렇지 않으면 폴더 따라서 같은 Incorrect function합니다 (유사하다 오류 Inappropriate ioctl for device리눅스에 오류).


3
용어를 약간 섞었습니다. \\.\…A는 에서 Win32 디바이스 네임 스페이스 , \\?\…A는 의 Win32 이름 공간 (또는 폴더)를 , 그리고 \\compname\…A는 UNC ( 네트워크 ) 경로 .
Synetech

@Synetech : 수정되었습니다.
bwDraco
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.