Làm cách nào để xóa một tệp trong Windows với tên tệp quá dài? [bản sao]


202

Câu hỏi này đã có câu trả lời ở đây:

Vợ tôi có một số tệp và thư mục bằng cách nào đó cuối cùng có tên tệp khiến chúng không thể xóa được (không thể xóa) bằng các cách thông thường hoặc thông qua dòng lệnh. Tôi tin rằng tên tệp quá dài do độ sâu của cấu trúc thư mục. Có ai biết một tiện ích tốt để làm sạch các tập tin như thế này?


Làm thế nào những tập tin này được tạo ra?
Nick

Xin lỗi vì sự thiếu hiểu biết của tôi về chủ đề này, nhưng Windows không nên xử lý các tệp này? Không phải những gì Eddins đăng sẽ được thực hiện tự động bởi Windows (ngay cả từ explorer)?
Stefanos Kalantzis

2
@ Mokubai- Câu hỏi trùng lặp nên được đánh dấu là một bản sao của câu hỏi này , vì câu hỏi này đã cũ hơn .
AStopher

1
@cybermonkey: Và nó có câu trả lời tốt hơn.
Ellesedil

Đối với độc giả, theo tôi, Phương pháp 7zip với CTRL+DELETE là phương pháp dễ nhất theo quan điểm của tôi ...
Christian Gollhardt

Câu trả lời:


426

Khi bạn muốn xóa hoàn toàn một thư mục và nó chứa các đường dẫn dài, robocopythực hiện công việc RẤT tốt:

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete

Điều này hoạt động vì bản sao nội bộ sử dụng các phiên bản nhận biết Unicode của các hàm Win32, với \\?\tiền tố cho đường dẫn tệp ; các hàm này có giới hạn 2¹⁶-1 (32.767) ký tự thay vì 259.

Bạn có thể cần phải trải qua quá trình này nhiều lần để thoát khỏi tất cả các tệp.


1
Hiệu quả khi không có tên ngắn (8.3) được lưu trữ trong hệ thống tập tin.
Antoine RODRIGUEZ

1
Điều này hoạt động tốt với các tệp bộ nhớ cache Windows Store cứng đầu của tôi đã từ chối bị xóa. Cảm ơn!
Samir

1
Tôi phải thêm / thanh trừng vào dòng robocopy để làm việc này, nhưng nó đã làm các trick sau đó
actionshrimp

3
Robocopy là thứ đưa tôi vào mớ hỗn độn này, nhưng tôi chưa bao giờ sử dụng Robocopy để giúp tôi thoát khỏi nó. Câu trả lời chính xác! Cảm ơn!
Jay Michaud

2
@SarahofGaia, xấu của tôi, thực sự là 2 - 1
Benoit

91

Từ một dấu nhắc lệnh:

dir /X

Điều này sẽ liệt kê các tập tin / thư mục của bạn ở định dạng tên ngắn. Sau đó sử dụng tên ngắn chính xác như được viết để xóa tệp:

del LONGF~1.txt

1
Tôi thích cái đó, đó là một chút suy nghĩ bên lề.
Col

Mặc dù tôi không thể đảm bảo nó sẽ hoạt động trong trường hợp này, nhưng tôi đã sử dụng nó nhiều lần để xóa các thư mục có ký tự không hợp lệ ở cuối khiến chúng không thể xóa bằng các phương tiện thông thường.
Will Eddins

1
Điều này hoạt động cho các tệp và thư mục trong thư mục hiện tại, nhưng nếu bạn bằng cách nào đó tìm thấy chính mình trong một thư mục có đường dẫn quá dài, nó sẽ không giúp ích gì. Ví dụ: tôi hiện đang ở trong bảng điều khiển trong một đường dẫn quá dài và thậm chí không thể dirhoặc cd ...
Bobson

1
@Bobson Nếu bạn không thể dirsử dụng pushdthay thế. Điều đó làm việc cho tôi.
BadHorsie

4
Điều này không hoạt động với Windows 10, tên tệp được hiển thị là tên dài
Loenix

53

Tôi tiến bộ theo cách của mình vào đường dẫn, đổi tên từng thư mục cha kế tiếp thành "1" và cố gắng xóa. Bạn đang rút ngắn đường dẫn một cách hiệu quả mỗi lần và tôi chưa bao giờ phải làm việc trong hơn 4 hoặc 5 thư mục cho đến khi cuối cùng tôi có thể xóa toàn bộ cấu trúc thư mục (có thể hoặc không thể là điều bạn muốn). Bạn cũng có thể làm điều này từ thư mục con cuối cùng và làm theo cách của bạn lên hoặc xuống.


7
Đây là điều duy nhất làm việc cho tôi. Tất cả các thủ thuật khác được đưa ra ở đây và trong các diễn đàn khác như điều này đã không hoạt động.
Andrew Arnott

Là đề nghị duy nhất làm việc đủ kỳ lạ.
Nestor Ledon

Điều này làm việc cho tôi, một phím tắt đã giúp tôi là mv * 1 && cd 1. Điều này không hoạt động khi có nhiều tệp trong thư mục nhưng tại thời điểm đó, người rm -rf *ta thường thực hiện thủ thuật.
Alexander Varwijk

1
Không thể làm điều này trong windows 10 ... đổi tên ném "tên tệp thành dài"
Dawesi

3
Điều này không chỉ khắc phục vấn đề cho tôi, nó còn giải thích cách tôi kết thúc vấn đề ở nơi đầu tiên. Tôi phải có một đường dẫn gần giới hạn, sau đó tôi đổi tên thư mục mẹ (đã thêm một cái gì đó như "sao lưu tháng 11 năm 2016" vào tên) để đẩy các tệp trong thư mục con vượt quá giới hạn. Thật tốt khi biết nguyên nhân cũng như giải pháp, mặc dù tôi biết nó cũng có thể xảy ra theo những cách khác, tôi nghĩ đây là cách phổ biến nó xảy ra với mọi người.
eselk

13

Trong một số chương trình, bao gồm Command Prompt ( cmd.exe), bạn có thể vượt qua giới hạn độ dài tệp bằng cách thêm tiền tố vào đường dẫn đầy đủ \\.\như sau:

\\. \ C: \ một số thư mục \ thư mục khác \ một tệp có tên dài

3
không hoạt động trong windows 10
Dawesi

cảm ơn, cmd đã làm việc say mê với điều này trong Win7rm -rf \\directoryname
Philip Pryde

13

Một mẹo mà tôi đã sử dụng để làm tròn giới hạn độ dài "đường dẫn đầy đủ và tên tệp" để di chuyển, sao chép hoặc xóa một cái gì đó là rút ngắn nó bằng cách "phá vỡ" một nửa (hoặc nhiều hơn) bằng cách sử dụng ký tự ổ đĩa được ánh xạ chỉ vào một thư mục đường xuống .

vì vậy, bạn có c: \ some \ long \ path ... \ và \ foo \ bar \ thư mục \ oldfiles \ myoldfile.txt.

Sau đó ánh xạ một ký tự ổ đĩa tùy ý đến một nơi nào đó dọc theo đường dẫn để đoạn đầu tiên của đường dẫn chỉ dài một vài ký tự. Điều kiện tiên quyết - thư mục phải nằm trong thư mục dùng chung (có thể là nếu nó ở trên máy chủ, đó là nơi tôi cần để làm điều này) và nếu chưa thì hãy chọn một thư mục ở đâu đó trong đường dẫn và chia sẻ nó. Tùy thuộc vào môi trường và mức độ hoang tưởng của bạn, cho phép mọi người sửa đổi quyền truy cập vào chia sẻ miễn là các quyền NTFS bị hạn chế một cách hợp lý. Nếu bạn muốn, chỉ cho phép sửa đổi quyền đối với tài khoản của riêng bạn.

Bây giờ hãy vào thư mục dùng chung hoặc một thư mục bên trong nó và chia sẻ nó, hoặc sử dụng dòng lệnh như sau. Giả sử bạn đã chia sẻ thư mục "foo" là "fooshare", thì bạn có thể làm

net use x: \\mycomputername\fooshare\bar\folders /persistent:no

và ổ X: bây giờ trỏ trực tiếp vào thư mục "thư mục" bên trong chia sẻ đó, vì vậy "x: \ oldfiles \ myoldfile.txt" hiện khá ngắn.

("/ Persent: no" có nghĩa là điều này sẽ không tồn tại trong lần khởi động lại tiếp theo và làm bạn bối rối sau này. Đừng quên chia sẻ thư mục của bạn khi hoàn tất.)

Hãy nhớ rằng, bạn không nhất thiết phải chia sẻ thư mục chứa tệp nhất thiết, nếu nó đã nằm trong thư mục dùng chung, bạn có thể chỉ cần ánh xạ qua chia sẻ và các thư mục lồng vào thư mục đích gần tệp và hoạt động tốt.

Tôi đã phải sử dụng kỹ thuật này để thực hiện một bản sao lớn giữa hai máy chủ khi chúng tôi nhận ra rằng người dùng đã ánh xạ các ổ đĩa khá sâu trong cấu trúc thư mục, vì vậy họ đã có thể sử dụng 255 ký tự từ đó, nhưng vượt quá tổng chiều dài đường dẫn tệp khi truy cập từ root ổ đĩa cục bộ.


4
bạn có thể tránh việc chia sẻ bằng cách sử dụng subst x: C:\Some\first\part\of\the\long\pathvà sau đó xóa ổ đĩa bằngsubst x: /d
mihi

1
Thử rất hay nhưng khi bạn có 10 thư mục k lồng nhau thì không thể.
Julian Knight

Thủ substthuật dường như hoạt động tốt, miễn là tên tệp không quá dài để làm cho nó vượt quá 260 ký tự ngay cả ở thư mục gốc của ổ đĩa.
Stephen Chung

Bạn cũng không cần phải chia sẻ rõ ràng bất kỳ thư mục nào với net use, bạn có thể sử dụng chia sẻ quản trị mặc định:net use x: \\localhost\c$\bar\folders /persistent:no
kapex

9

Cách đơn giản nhất mà tôi tìm thấy là khởi động từ đĩa CD trực tiếp trên Ubuntu.

Để thay thế, bạn có thể tạo một thư mục dùng chung ở giữa đường dẫn và sau đó ánh xạ ổ đĩa mạng tới đó và thực hiện xóa khỏi thư mục được ánh xạ (ngay cả trên cùng một máy)


17
Thật buồn cười khi tần suất Ubuntu Live CD sẽ giúp khắc phục các sự cố của Windows ^^
Ivo Flipse

1
Tôi đã nhận thấy rằng bản thân mình, mạng tinh ranh hãy thử một đĩa CD trực tiếp, sự cố hệ thống tệp hãy thử một đĩa CD trực tiếp, bảng phân vùng bị hỏng, v.v. :-)
Col

Đây là giải pháp duy nhất làm việc cho tôi. Tôi yêu bạn, Linux! <3
David Frye

1
Chạy bash từ windows Không cần Linux. ;-) Ngoài ra, nếu bạn đang chạy windows 10, chỉ cần cài đặt Windows Windows subsystem cho Linux "về cơ bản, windows sử dụng các móc api ub Ubuntu để hoàn thành công việc ... bao gồm" apt, ssh, rsync, find, grep, awk, sed, sắp xếp "Đây là một môi trường phát triển Linux rất đầy đủ, tình cờ
Dawesi

cygwin là một cách khác để chạy các lệnh LINUX trong windows
atom88

5

Đổi tên thư mục cắt / dán tệp ở nơi khác, sau đó xóa nó. Hoạt động ở đây.

Hoặc chỉ từ dấu nhắc lệnh, nếu bạn không cảm thấy muốn trải qua rắc rối.


Công việc này như một cái duyên vậy. Đi xuống đó (đối với tôi, đó là các node_modulesthư mục siêu lồng nhau ), kéo nó ra màn hình của bạn và xóa đi. Rửa sạch và lặp lại khi bạn đi lên một vài thư mục cùng một lúc. Thật là một vấn đề đáng ghét.
nickb

7
Điều này không hiệu quả với tôi - thao tác dán thất bại vì tên tệp dài - không quan trọng là cắt nó ở đâu.
UpTheCux

1

Có lẽ không phải là cách tốt nhất và tôi quan tâm để xem những gì người khác nghĩ ra -

Tôi đã có điều này một lần và tôi đã thử một vài điều mà không gặp may mắn. Thay vì tìm kiếm một công cụ tốt, tôi khởi động lại với Windows Disk, đi đến bàn điều khiển phục hồi và chỉ xóa nó từ đó. Làm việc lần đầu tiên và thực sự tốt!

Ngoài ra, chỉ cần làm một Google cho bạn và tìm thấy điều này - DelinvFile có vẻ tốt nhưng không thể bảo đảm cho nó.

Chỉnh sửa - Cảnh báo, chỉ thấy ở trên chỉ là bản dùng thử - Có thể không tốt như tôi nghĩ ban đầu!


Rimraf miễn phí hoạt động tốt và hoạt động khi tất cả các ý tưởng khác không thành công. Nó yêu cầu node.js
Julian Knight
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.