Cứ sau vài năm, tôi lại phải đối mặt với vấn đề nhỏ này. Tôi cố gắng xóa một tệp trong Windows Explorer và nó báo lỗi cho tôi biết rằng nó không thể tìm thấy (và xóa) tệp được chỉ định. OK, xảy ra. Vì vậy, tôi đi đến dòng lệnh và thực hiện xóa ở đó. Tuy nhiên, lần này, tôi gặp phải một trở ngại mới. Hành động xóa thông thường sẽ không hoàn tất, với dấu nhắc lệnh cho biết:Hệ thống không thể tìm thấy tệp được chỉ định.
Tôi gặp sự cố này với tệp khóa được tạo bởi máy in Xerox B215 của tôi trên chia sẻ Samba. Vì một lý do kỳ lạ nào đó, máy in đã cắt bớt tên tệp thực và thay vì tên là "Xerox_Scan.pdf", nó chỉ được đặt tên là "Xerox_Scan". Ha, nhưng nó có thật không?
Sự cố
Vì vậy, trên dòng lệnh, chúng tôi nhận được điều này:
từ "Xerox_Scan."
Hệ thống không thể tìm thấy tệp được chỉ định.
Tại thời điểm này, tôi nhận ra rằng tên tệp có thể có một ký tự lạ ở cuối không hiển thị trong Windows Explorer hoặc dấu nhắc lệnh. Trên thực tế, điều này làm tôi nhớ đến một thủ thuật nhỏ mà tôi và một số đồng nghiệp sẽ sử dụng trong các kỳ thi quản trị hệ thống dành cho đàn em của chúng tôi. Chúng tôi sẽ tạo một tệp có các ký tự đặc biệt ở cuối, giống như thủ thuật Alt + 255 cũ trong DOS, rồi xem ai sẽ tìm ra nó. Tất nhiên, trong Linux, bạn có thể sử dụng tiện ích kết xuất bát phân (od) để xem toàn bộ các ký tự.
Giải pháp
Trong Windows, cách tiếp cận là thực hiện tìm kiếm tham lam (hoặc xóa chính xác hơn). Nếu bạn đang thắc mắc điều gì đang xảy ra ở đây, hãy nghĩ đến các biểu thức chính quy. Chúng tôi đang tìm bất kỳ tệp (/s) nào trong bất kỳ thư mục con nào trong đường dẫn đã chỉ định và chúng tôi đang tìm tệp không có hoặc nhiều ký tự khoảng trắng ở cuối. Bùng nổ. Công việc đã hoàn thành, không còn xấu xí nữa.
del /s \\?\D:\Scans\Xerox_Scan."
Tệp đã xóa - \\?\D:\Scans\Xerox_Scan.
Kết luận
Về mặt kỹ thuật, một tệp không thể xóa được không phải là một vấn đề lớn, nhưng đó là một vấn đề ở cấp độ OCD, về mặt thẩm mỹ và về mặt lý thuyết, nó có thể ảnh hưởng đến các tập lệnh sao lưu hoặc các tác vụ đã lên lịch nếu chúng không được thiết kế để bỏ qua các tệp này một cách duyên dáng tốt bụng. Vì vậy, sau cùng thì bạn cũng muốn thực hiện một số công việc bảo trì nhẹ.
Có nhiều phương pháp khác mà bạn có thể sử dụng. Ví dụ:Process Explorer cũng có thể tìm kiếm các tệp và sau đó xóa chúng, kể cả các ký tự khoảng trắng. Nhưng tôi thấy việc thực thi tìm kiếm regex dòng lệnh đơn giản là giải pháp tao nhã nhất. Dù sao, nhiệm vụ của chúng tôi thật khó chịu nhưng nó có một giải pháp nhanh chóng và dễ dàng. Hẹn gặp lại.
Chúc mừng.