Tại sao tôi không thể đặt tên thư mục hoặc tệp 'CON' trong Windows?


30

Trong tất cả các phiên bản Windows, chúng tôi không thể đổi tên tệp hoặc tên thư mục như CONkhông có phần mềm đổi tên tệp của bên thứ ba. Cố gắng làm điều này trong Windows 7 dẫn đến một lỗi:

Tên thiết bị được chỉ định không hợp lệ.

Cố gắng lưu tệp như con.txttrong Notepad dẫn đến một lỗi tương tự:

Tên tệp này được dành riêng để sử dụng bởi Windows.
Chọn một tên khác và thử lại.

Tại sao chúng ta không thể đặt tên một tệp hoặc thư mục CONtrong Windows?


Câu trả lời:


35

"Con" là tên của một thiết bị I / O hệ thống, bàn điều khiển.

  • con
  • lỗi
  • không

Và một vài người khác, tôi nghĩ.

Ngày xưa, DOS thường tạo một tệp (và thỉnh thoảng tôi vẫn làm điều này) với:

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

Một sửa chữa nhỏ: err không được bảo lưu. Danh sách đầy đủ các tên thiết bị dành riêng là: con, nul, prn, com1..9 và lpt1..9. Chúng thậm chí được dành riêng khi được sử dụng với bất kỳ phần mở rộng nào (ví dụ con.txt).
efotinis

"trừ khi chúng tôi sử dụng phần mềm đổi tên" Giới thiệu về phần được trích dẫn, làm thế nào để "đổi tên phần mềm" xoay quanh vấn đề cơ bản của hệ điều hành
Sathyajith Bhat

1
Bạn đã cho tôi. Tôi nghi ngờ rằng bất kỳ "phần mềm đổi tên" nào cũng có thể làm điều đó. Nhưng nếu có thể, tôi lo lắng về việc có thể mở hoặc thậm chí di chuyển tệp. Như bạn đã nói, hệ điều hành sẽ có vấn đề với nó.
JMD

11
Danh sách chính có tại msdn.microsoft.com/en-us/l Library / aa365247% 28VS85% 29.aspx Không sử dụng tên thiết bị dành riêng sau đây cho tên của tệp: CON, PRN, AUX, NUL, COM1 , COM2, COM3, COM4, ​​COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 và LPT9. Cũng tránh những tên này theo sau bởi một phần mở rộng; ví dụ: NUL.txt không được khuyến nghị.
shf602

1
@Sathya: Bằng cách sử dụng tiền tố \\? \ Để bỏ qua phân tích tên tệp. Ví dụ: "\\? \ C: \ con \ nul.txt".
grawity

13

CONlà một tên dành riêng trong Windows. Vậy là PRN, AUX, NUL, LPT1và những người khác.


2
CON là viết tắt của giao diện điều khiển. Mở cửa sổ nhắc lệnh, điều hướng đến thư mục chứa tệp văn bản và nhập "copy file.txt con" Nó sẽ ghi nội dung của tệp văn bản vào bàn điều khiển (cửa sổ nhắc lệnh)
Keltari

12

tôi đã đưa ra câu trả lời này cho một bản sao và nghĩ rằng tôi sẽ đăng nó ở đây để bạn tham khảo:

như đã nói trước đây. đó là một từ dành riêng từ trở lại trong MS-DOS, cho thiết bị CONsole (theo như tôi có thể nhớ). nhưng, bạn có thể buộc windows / dos tạo thư mục cho bạn . đối với thiết bị, nó sử dụng định dạng \\.\[RESERVED_WORD]để truy cập vào "tệp" (những thiết bị này được sử dụng tệp để liên lạc). để buộc các cửa sổ tạo thư mục của bạn, thay vì làm mkdir [RESERVED_WORD], hãy làm như sau:

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

ví dụ: để tạo thư mục CON trên màn hình của tôi,

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

để xóa thư mục, bạn phải tham chiếu nó theo cùng một cách, nếu không nó sẽ không hoạt động.

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

Lời khuyên của tôi là chỉ sử dụng một tên khác. sẽ rất khó để luôn đề cập đến nó thông qua đường dẫn tuyệt đối của nó, đặc biệt nếu bạn đang phát triển một ứng dụng mà bạn dự định triển khai.


4

Điều này là do nó được sử dụng để đại diện cho "thiết bị nội bộ". Tuy nhiên, bạn có thể tạo thư mục này bằng lệnh sau trong dấu nhắc lệnh:

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

Thư mục này không thể bị xóa thông qua nhấp chuột phải, xóa. Bạn phải sử dụng lệnh sau (một lần nữa trong dấu nhắc lệnh):

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

Nguồn: http://yhisham.blogspot.in/2012/09/mystery-about-con-folder-in-windows.html


3

Ngoài câu trả lời của Pablo Santa Cruz , đây là danh sách đầy đủ các từ khóa được Windows sử dụng nội bộ và được bảo lưu. Tất cả những điều sau đây là trường hợp không nhạy cảm

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

Bạn có thể sử dụng _conthay thế


2

Bạn có thể đổi tên nó mà không cần sử dụng bất kỳ phần mềm đặc biệt nào, chỉ cần nhắc lệnh:

Ví dụ:

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

Sau khi \\?\đường dẫn đầy đủ nên được chỉ định.


0

Giống như có những ký tự không thể được sử dụng trong tên tệp , cũng có một số từ (toàn bộ tên tệp) không thể được sử dụng vì chúng được bảo lưu.


0

copy conlà một phương pháp cổ xưa (MS-DOS) để tạo một tệp văn bản. Ví dụ:

copy con output.txt

Vì vậy, nó là một từ dành riêng và không thể được sử dụng làm tên thư mục trong Windows.


0

Như đã đề cập, bạn có thể tạo và thao tác các tệp và thư mục có tên dành riêng trên dòng lệnh bằng cách sử dụng một không gian tên thiết bị hoặc tên tệp \\.\C:\NUL, nhưng hãy xem điều gì xảy ra khi bạn cố truy cập vào tệp hoặc thư mục đó thông qua Windows Explorer:

Lỗi mở thư mục có tên NUL Lỗi xóa thư mục có tên NUL

Mọi quyền truy cập vào một đối tượng có tên thiết bị dành riêng được coi là tham chiếu đến thiết bị được chỉ định bởi tên đó, trừ khi bạn sử dụng cách giải quyết không gian tên đã nói ở trên. Những lỗi này xảy ra bởi vì Windows đang nỗ lực để hoạt động trên chúng như thể chúng là thư mục bình thường, nhưng bạn không thể mở một thiết bị có tên NUL, CONhoặc bằng cách khác như một thư mục-do đó Incorrect functionlỗi (mà là tương tự như Inappropriate ioctl for devicelỗi trên Linux).


3
Bạn đã trộn lẫn thuật ngữ một chút. \\.\…là một Win32 thiết bị không gian tên , \\?\…là một Win32 filename (cũng cho các thư mục) namespace , và \\compname\…là một UNC ( mạng ) đường dẫn .
Synetech

@Synetech: Đã sửa.
bwDraco
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.