Làm cách nào để xóa một tệp có tên là NUL NUL trên Windows?


49

Tôi có một hộp Windows XP (hệ thống tệp NTFS) mà tôi tìm thấy một tệp có tên NUL. Tôi không thể xóa tập tin này theo bất kỳ cách thông thường nào. Tệp dường như được sở hữu Administratortrong SYSTEMnhóm, không giống như bất kỳ tệp nào khác trong cùng thư mục (các tệp khác được sở hữu bởi id người dùng của tôi).

Làm thế nào để tôi thoát khỏi tập tin này? Nó từ đâu đến?


3
NUL là một từ dành riêng cho hệ thống; xem bài viết Wikipedia này . Một tệp có tên NUL không bao giờ tồn tại trên hệ thống tệp; điều này có thể được gây ra bởi phần mềm lỗi. Bạn có thể loại bỏ nó bằng DELETElệnh bằng Command Prompt.
bwDraco

9
@DragonLord: Hệ thống tập tin không gặp vấn đề với những cái tên đó; ví dụ: bạn có thể tạo các tệp như vậy trong môi trường POSIX. (Người ta có thể tìm aux.cvà đặt tên tương tự trong mã nguồn phần mềm.) Đây hoàn toàn là API Win32 quản lý các "tên thiết bị" này.
grawity

Điều tương tự cũng áp dụng cho CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, ​​COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT7, LPT $ cộng với một vài người khác - xem en.wikipedia.org/wiki/ Từ
robocat

Cygwin tạo (hoặc được sử dụng) một tệp có tên "nul", thường thấy trong "C: \ cygwin \ dev \ nul". Đây là cái mà tôi đã trúng vài năm một lần, tôi Google và tôi được đưa trở lại (một lần nữa) cho câu hỏi này.
zarchasmpgmr

Câu trả lời:


83

Thử

Del \\?\C:\My\Path\NUL

trong dấu nhắc lệnh.

Xem bài viết Hỗ trợ này của Microsoft để biết chi tiết: Bạn không thể xóa tệp hoặc thư mục trên ổ đĩa hệ thống tệp NTFS , trong "Nguyên nhân 5: Tên tệp bao gồm tên dành riêng trong không gian tên Win32".


1
Cảm ơn! Điều đó đã làm việc! Ngoài ra, cảm ơn bạn đã tham khảo tuyệt vời các tài liệu có thẩm quyền. Tôi tìm thấy một cái gì đó trong một tìm kiếm trên web rất giống nhau, nhưng không hoạt động. Đề nghị đó đã có một .vị trí của ?.
Greg Mattes

1
@Greg: Chắc chắn rồi! Tài liệu này là sự giúp đỡ của @ DragonLord. :-) Và vâng, .thay vì ?không hoàn toàn làm điều tương tự - dấu hỏi ngăn hệ thống con xử lý thêm, trong khi giai đoạn có nghĩa là "máy hiện tại" ... không hoàn toàn giống như vậy, mặc dù điều đó chắc chắn gây nhầm lẫn. :)
Mehrdad

1
Tôi không chắc nó thực sự có nghĩa như vậy. Các \\.\ tiền tố là cho không gian tên thiết bị , nhưng không có đề cập rõ ràng rằng .có ý nghĩa tương tự ( "hiện tại X") vì nó làm cho tên thư mục.
grawity

4
Thay thế cho giải pháp trên nếu thư mục làm việc của bạn đã là thư mục chứa nultệp, bạn có thể: del "\\?\%CD%\nul"Phần %CD%được mở rộng sang thư mục làm việc và dấu ngoặc kép ( ") làm cho tất cả xử lý cả tên đường dẫn có ký hiệu "lẻ", vd "\\?\C:\path,with\comma\nul".
HenrikB

1
Nó dường như không có hiệu quả từ powershell hoặc một dấu nhắc nâng cao về mặt hành chính trong môi trường của tôi, nhưng hoạt động hiệu quả trong một thiết bị đầu cuối tiêu chuẩn.
JustinC

13

Ngoài ra, nếu bạn đã cài đặt Cygwin , bạn có thể muốn biết rằng nó không có vấn đề gì với các tệp hoặc thư mục đó. Đặc biệt,

rm -r /cygdrive/c/path/to/the/file/or/folder/you/want/to/delete

gõ vào thiết bị đầu cuối Cygwin sẽ xóa tệp hoặc thư mục có tên nulhoặc thư mục chứa tệp đó. Điều này cũng được áp dụng cho tên tập tin đặc biệt khác như CON, PRN, AUX, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8.


2
cũng hoạt động với git bash
c33s

Nếu bạn đã cài đặt Git thì bạn đã có rmlệnh GNU nên bạn không cần cygwin. Giả sử bạn thêm thư mục bin công cụ GNU vào PATH, bạn có thể sử dụng tất cả các tính năng GNU từ cmd.
icc97

8

Tôi đang thêm điều này vào đây vì nó có kết quả cao trong google và tôi gặp vấn đề tương tự đối với một thư mục có tên NUL. Thật không may, các sửa chữa ở trên đã không giúp đỡ. Tôi cũng không nhìn vào hàng tấn thứ khác.

Tôi đã thử rmdir\\?\C:\My\Path\NULrmdir\\.\C:\My\Path\NULkhông thành công và cũng đã thử một số lệnh bằng cách sử dụng bash từ cài đặt SourceTree của tôi. Không có niềm vui.

Cuối cùng, tôi đã sử dụng DIR /X /Atừ cmd để liệt kê các tên ngắn trong thư mục cha. Điều này trả về NUL~1cho thư mục NUL của tôi.

Điều này sau đó đã được sử dụng trong lệnh tiêu chuẩn rmdir /s NUL~1và cuối cùng đã khắc phục vấn đề.


Hmm, thật thông minh khi sử dụng tên ngắn để bỏ qua tên đặc biệt.
SamB

1

Nếu bạn đã cài đặt Git cho Windows, hãy làm như sau

  1. Mở thư mục chứa các tệp bạn muốn xóa
  2. Nhấp chuột trái và chọn Git Bash Here
  3. rm nul.jsontại dấu nhắc lệnh và nhấn ENTER, tệp bây giờ sẽ bị xóa.

chạy Git Bash tại đây

LƯU Ý: Những ảnh chụp màn hình này cho thấy việc xóa tệp nul.topo.jsonlà một tệp khác mà tôi không thể xóa bằng một thao tác xóa đơn giản.

sau khi thực hiện lệnh

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.