Làm cách nào để tạo tên thư mục hoặc tên tệp với các ký tự đặc biệt như \ /: *? "<> | [trùng lặp]


9

Vấn đề của tôi là, tôi không thể đặt tên thư mục hoặc tệp của mình bằng các ký tự đặc biệt như \ /: *? "<> | Trong hệ điều hành dựa trên windows Điều này rất quan trọng đối với tôi, đó là đặt tên tệp / thư mục chứa loại ký tự này.

Tôi đã tìm kiếm và giới thiệu rất nhiều trang web, cho vấn đề này nhưng tất cả đều vô vọng. Tôi cũng đọc trang hỗ trợ của Microsoft, họ đề nghị sử dụng các ký tự khác. Đây là liên kết của nó, https://support.microsoft.com/en-us/kb/177506

Tôi đã thử nút Alt + số mã ASCII của loại ký tự đặc biệt này, từ khóa numpad, chỉ cần đổi tên tệp / thư mục và nhấn Alt + 60 (cho <ký tự) Vẫn đưa ra thông báo rằng, Tên tệp không thể chứa bất kỳ thông tin nào sau đây nhân vật: \ / : * ? "<> |

Đề xuất cho tôi giải pháp phù hợp để tôi có thể đặt tên cho tệp / thư mục của mình với loại ký tự đặc biệt này.


Chỉ tò mò: bạn cần nó để làm gì?
Kamil Maciorowski

@ kamil Đây là tên của tệp / thư mục của tôi và một nhiệm vụ đầy thách thức đối với tôi.
Kirit_Vanani

@ PIMP_JUICE_IT Tôi đã làm nó, (literalString -literalPath nhưng vẫn không có được thành công.
Kirit_Vanani

ngay cả khi bạn có thể tạo các tệp với các ký tự này, không có chương trình nào có thể mở hoặc lưu chúng.
Keltari

10
- Làm thế nào tôi có thể liếm khuỷu tay của tôi? - Bạn không thể. - Nhưng tôi phải. - Bạn có thể bẻ tay và thử nhưng cánh tay của bạn sẽ vô dụng sau đó. - Tôi không quan tâm, tôi chỉ cần liếm khuỷu tay.
Kamil Maciorowski

Câu trả lời:


16

Điều này rất quan trọng đối với tôi, việc đặt tên tệp / thư mục chứa các ký tự này.

Nó có thể quan trọng với bạn, nhưng bạn sẽ phải để điều này đi và tìm một cách khác để giải quyết vấn đề của bạn.

Các ký tự này không được phép bởi các lệnh gọi hàm Windows OS xử lý tên tệp.

Chúng đặc biệt không được phép vì chúng có một mục đích sử dụng khác:

  • \- Dành riêng để sử dụng như một dấu phân cách đường dẫn và ký tự thoát
  • / - Dành riêng để sử dụng như một dải phân cách
  • : - Dành riêng để sử dụng làm dấu phân cách tên ổ đĩa
  • *?- Dự trữ để dùng như ký tự đại diện ký tự
  • "- Dành để sử dụng để trích dẫn tên có chứa khoảng trắng
  • <, >|- Dành để sử dụng làm toán tử chuyển hướng lệnh

Tất nhiên, bạn có thể tạo các tệp có tên chứa các ký tự này bằng một hệ điều hành khác (miễn là hệ điều hành đó có thể đọc / ghi hệ thống tệp Windows).

Tuy nhiên, bạn sẽ không thể làm bất cứ điều gì với các tệp đó bằng bất kỳ chương trình Windows nào và họ sẽ không hiểu tên tệp và sẽ phát sinh lỗi.


Đặt tên tệp, đường dẫn và không gian tên

Quy ước đặt tên

Các quy tắc cơ bản sau đây cho phép các ứng dụng tạo và xử lý tên hợp lệ cho tệp và thư mục, bất kể hệ thống tệp:

...

Sử dụng bất kỳ ký tự nào trong trang mã hiện tại cho một tên, bao gồm các ký tự và ký tự Unicode trong bộ ký tự mở rộng (128 đoạn255), ngoại trừ các ký tự sau:

  • Các ký tự dành riêng sau:

    < (less than)
    > (greater than)
    : (colon)
    " (double quote)
    / (forward slash)
    \ (backslash)
    | (vertical bar or pipe)
    ? (question mark)
    * (asterisk)
    
  • Giá trị nguyên bằng 0, đôi khi được gọi là ký tự NUL ASCII.
  • Các ký tự có biểu diễn số nguyên nằm trong phạm vi từ 1 đến 31, ngoại trừ các luồng dữ liệu thay thế nơi các ký tự này được cho phép. Để biết thêm thông tin về các luồng tệp, hãy xem Luồng tệp.
  • Bất kỳ ký tự nào khác mà hệ thống tệp đích không cho phép.

Nguồn đặt tên tệp, đường dẫn và không gian tên


Nhưng dù sao thì tôi cũng muốn làm điều này.

Cài đặt cygwin và sử dụng touch.

Tôi đã không kiểm tra tất cả các khả năng nhưng công việc sau đây:

touch :
touch \|
touch \"
touch \>

Ví dụ đầu ra:

DavidPostill@Hal /f/test/impossible
$ ll
total 0
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:03 '"'
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:02 :
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:02 '|'
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:07 '>'

Như bạn có thể thấy chúng không thể sử dụng được trong Windows:

F:\test\impossible>dir
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\impossible

10/08/2016  21:07    <DIR>          .
10/08/2016  21:07    <DIR>          ..
10/08/2016  21:03                 0 
10/08/2016  21:02                 0 
10/08/2016  21:07                 0 
10/08/2016  21:02                 0 
               4 File(s)              0 bytes
               2 Dir(s)  1,772,601,536,512 bytes free

nhập mô tả hình ảnh ở đây


Tôi đánh giá cao câu trả lời của bạn, nó hơi hữu ích một chút, nhưng vấn đề của tôi vẫn như cũ .. Tôi nghĩ rằng bất kỳ cách siêu người dùng nào khác để đổi tên với các nhân vật đặc biệt này.
Kirit_Vanani

2
@Krite Bạn có thể tạo các tệp với các ký tự đó nhưng Windows không thể làm gì với chúng và bạn sẽ gặp lỗi khi thử và sử dụng các tệp đó từ trong Windows.
DavidPostill

@ DavidPostill Ohh, Cách tạo tên tệp với các ký tự đó. Tôi không phiền nếu nó báo lỗi, nhưng bây giờ nhiệm vụ là cung cấp các loại ký tự này .. Để truy cập tệp này, tôi sẽ sử dụng hệ điều hành dựa trên linux khác
Kirit_Vanani

1
@Krite Tôi đã nói với bạn trong câu trả lời "Tất nhiên, bạn có thể tạo các tệp có tên chứa các ký tự này bằng một hệ điều hành khác (miễn là hệ điều hành đó có thể đọc / ghi hệ thống tệp Windows)."
DavidPostill

3
@Krite Tôi đã nói với bạn điều đó là không thể .
DavidPostill

3

Xây dựng bộ phông chữ của riêng bạn. Thay thế một số ký tự bạn không sử dụng bằng hình ảnh của các ký tự dành riêng.


1
Điều đó hoặc sử dụng các ký tự trông giống nhau. Với Unicode, mọi thứ đều có thể. 🎃
Daniel B

@ Craig620 Có thể nó sẽ không thể, đối với tôi. có thể cho tôi một số gợi ý cho nó.
Kirit_Vanani

Không chắc chắn, chỉ là một ý tưởng điên rồ xuất hiện trong đầu. Có lẽ có một diễn đàn Stack Exchange cho kiểu chữ hoặc xuất bản mà bạn có thể yêu cầu?
Clayton

2

Trong Windows, bạn không thể tạo tệp với các ký tự đó. Không có giải pháp, các ký tự này bị API Win32 cấm.

Win32 là một tập hợp con của không gian tên POSIX và không phân biệt chữ hoa chữ thường. Nó sử dụng tất cả các ký tự Unicode, ngoại trừ: '"' '*' '/' ':' '<' '>' '?' '\' '|' Tên NB không thể kết thúc bằng Dot '.' Hoặc Space ''.

- http://dubeyko.com/development/FileSystems/NTFS/ntfsdoc.pdf


NTFS không phải là vấn đề. (Trong thực tế nó cho phép những nhân vật tốt - nó phải , hỗ trợ Interix.) Vấn đề là Windows chính nó, nghĩa là, các hạn chế được áp đặt bởi Win32 API không có vấn đề gì FS cơ bản là.
dùng1686

@grawity, bạn có vẻ đúng dựa trên các nghiên cứu sâu hơn của tôi. Tôi đã chỉnh sửa câu trả lời của tôi để phản ánh điều này.
ChrisInEdmont

Tôi nghĩ rằng NTFS không phải là vấn đề. Nó phải có một số giải pháp. Khi tôi truy cập ổ đĩa NTFS từ HĐH dựa trên Linux, tôi có thể nhập các loại ký tự này.
Kirit_Vanani

"Tên không thể kết thúc bằng Dot". Sai. Bạn có thể gửi tên kết thúc bằng .. Bạn không thể làm gì nhiều với họ từ cmd:)
DavidPostill

1
@Krite Bạn đã nói nhiều lần là không thể .
DavidPostill
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.