Windows không thể xóa ._. Tập tin


91

Tôi hiện có một tập tin ở gốc của ổ cứng ngoài được đặt tên đơn giản ._., mà tôi đoán là đã được thêm vào ổ cứng sau khi sử dụng nó trên MacBook của tôi một thời gian trước đây. Tôi đang cố xóa tệp này trên máy Windows 10 của mình; tuy nhiên Windows tiếp tục tuyên bố rằng tập tin không thể được tìm thấy.

Thông báo lỗi từ Windows Explorer

Tôi cũng đã cố gắng xóa tập tin thông qua một dấu nhắc lệnh nâng cao; tuy nhiên tin nhắn tương tự được trả lại.

Thông báo lỗi từ dấu nhắc lệnh nâng cao

Có cách nào để tôi có thể xóa tệp này khỏi ổ cứng thông qua Windows không?


7
@ rr- sự khốn khổ mà bạn có thể làm với tên tệp unix có xu hướng lớn hơn nhiều. : 3
Martijn

5
Dấu nhắc lệnh của bạn hiển thị một cái gì đó kỳ lạ. Bạn đã làm find "._."nhưng để lại các trích dẫn cho del ._.. Bạn đã thử del "._."chưa
jpmc26

1
hiện tượng thú vị. đặc biệt là khó khăn như thế nào để xóa. Bạn có chắc chắn rằng tập tin đã được tạo hợp pháp? (cách đặt tên của nó nghe có vẻ khá lạ ngay cả đối với máy mac)
Thomas

30
Phần yêu thích của tôi là biểu hiện của tập tin về những nỗ lực của bạn để xóa nó.
Workman

8
"._."Bạn không thể xóa điều này vì gấu túi là một loài được bảo vệ.

Câu trả lời:


146

Chạy lệnh sau (có thể yêu cầu đặc quyền nâng cao / dấu nhắc lệnh mở với tư cách quản trị viên):

del "\\?\F:\._."

Về \\?\tiền tố :

Đối với I / O tệp, \\?\tiền tố "" cho chuỗi đường dẫn cho API Windows để vô hiệu hóa tất cả phân tích chuỗi và gửi chuỗi theo sau nó tới hệ thống tệp.

...

Vì nó tắt tự động mở rộng chuỗi đường dẫn, \\?\tiền tố "" cũng cho phép sử dụng " .." và " ." trong tên đường dẫn, có thể hữu ích nếu bạn đang cố thực hiện các thao tác trên một tệp với các đường dẫn tương đối dành riêng này specifier như là một phần của con đường đủ điều kiện.

Lưu ý rằng bạn không thể sử dụng \\?\tiền tố "" với đường dẫn tương đối.

Ví dụ :

==> set prog>"\\?\D:\bat\Unusual Names\._."

==> dir "D:\bat\Unusual Names\*"|find "._."
08.11.2015  13:25               132 ._.

==> type "D:\bat\Unusual Names\._."
The system cannot find the file specified.

==> type "\\?\D:\bat\Unusual Names\._."
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files

==> del "D:\bat\Unusual Names\._."
Could Not Find D:\bat\Unusual Names\._.

==> del "\\?\D:\bat\Unusual Names\._."

==> dir "D:\bat\Unusual Names\*"|find "._."

==>

Có thể sử dụng tiền tố đó với một URL, một startlệnh?
Steven Penny

Bạn không sử dụng điều này với một URL. Bạn sử dụng dấu ngoặc kép nếu bạn muốn chạy URL từ lệnh start.
Nelson

1
... Điều này có thể được sử dụng để vượt qua giới hạn chiều dài? (Ví dụ: xóa một node_modulesthư mục.)
jpmc26

1
@ jpmc26 Theo MSDN (xem liên kết được cung cấp trong câu trả lời của tôi), vâng. Tuy nhiên, tôi đã gặp các tình huống trong đó \\?\ tiền tố được sử dụng trong delhoặc rmdircác lệnh không giúp ích. Chuyển sang 7-zipquản lý tập tin.
JosefZ

2
@ jpmc26: Nó có thể bỏ qua một số giới hạn chiều dài. Về cơ bản, một đường dẫn mở rộng có giới hạn chiều dài là 32K. Nhưng hầu hết các đường dẫn như C:\Windowshoặc ..không được mở rộng và những đường dẫn có giới hạn độ dài chỉ 260. Giới hạn 260 đó được thi hành ở nhiều nơi; thật không may, một vài trong số những nơi đó cũng áp dụng không chính xác giới hạn đó cho các đường dẫn `\?`.
MSalters

24

Mặc dù câu hỏi đã được trả lời, tôi vẫn muốn đưa ra một giải pháp thay thế khả thi: sử dụng "tên ngắn" kế thừa (mà bạn có thể hiển thị với tùy chọn "/ x" cho lệnh dir) cũng có thể cho phép bạn hiểu rõ hơn về các tệp có tên "vui nhộn" mà bạn không thể xử lý bằng cách khác:

C:\temp\test>dir
 Volume in drive C has no label.
 Volume Serial Number is 887A-5E48

 Directory of C:\temp\test

11.11.2015  16:31    <DIR>          .
11.11.2015  16:31    <DIR>          ..
11.11.2015  16:31                 7 ._.
               1 File(s)              7 bytes
               2 Dir(s)  44.966.129.664 bytes free

C:\temp\test>dir /x
 Volume in drive C has no label.
 Volume Serial Number is 887A-5E48

 Directory of C:\temp\test

11.11.2015  16:31    <DIR>                       .
11.11.2015  16:31    <DIR>                       ..
11.11.2015  16:31                 7 _3E35~1      ._.
               1 File(s)              7 bytes
               2 Dir(s)  44.966.129.664 bytes free

C:\temp\test>del _3e35~1

C:\temp\test>dir
 Volume in drive C has no label.
 Volume Serial Number is 887A-5E48

 Directory of C:\temp\test

11.11.2015  16:31    <DIR>          .
11.11.2015  16:31    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  44.966.129.664 bytes free

20

Cài đặt 7-zip , mở nó và sử dụng menu tệp của nó để đổi tên tệp thành tên bình thường (ví dụ như aaa) và sau đó bạn có thể xóa nó. Tìm thấy tại bài viết này .

Tôi đã thử nghiệm điều này trên Windows XP chạy trong VM. Tôi đã sử dụng Linux để tạo một tệp được gọi ._.trên một thư mục dùng chung.


-4

Chỉ cần op windows explorer của bạn, điều hướng đến tập tin. Đổi tên tệp như: filename.txt Bây giờ bạn có thể xóa nó. Nếu bạn không thể làm điều này thì bạn cần chắc chắn rằng bạn có quyền quản trị.

(btw lý do tại sao bạn không thể xóa nó là vì tên tệp thực sự không có tên và phần mở rộng không hợp lệ. Tên tệp là "." và phần mở rộng là "__." không được phép.)


1
@ The_IT_Guy_You_D Don't_Like Tôi tò mò, OP đã đề cập đến vấn đề đó ở đâu?
muru

@Arie Klep, tôi lấy lại lời. Tôi phải đọc nó trong một câu hỏi tương tự khác
chơi chữ

-8

Bạn có thể xóa tệp bằng 1) Quyền sở hữu 2) cấp cho quản trị viên (bạn) toàn quyền 3) Thực hiện những gì bạn muốn với tệp

Dấu nhắc CMD nâng cao

Takeown / f Đường dẫn đầy đủ đến tệp không thể xóa được (mục cuối cùng phải là tệp không thể xóa được)

icacls Đường dẫn đầy đủ đến tệp không thể xóa / cấp quản trị viên: f

Xóa tài liệu


26
Vấn đề dường như là Windows hoàn toàn không thể truy cập tệp, vì tên tệp không tuân thủ của nó, vì vậy tôi sẽ rất ngạc nhiên nếu câu trả lời này hoạt động.
Scott
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.