Cách xóa thư mục có đường dẫn / tên quá dài để xóa bình thường


380

Windows dường như có giới hạn độ dài đối với tên tệp khi cố gắng xóa, mặc dù điều đó sẽ không ngăn các tệp đó được tạo.

Quá trình xây dựng của chúng tôi tạo ra một số tệp tạm thời (nhiều bản dựng của WSDL) chạy theo giới hạn này. Tập lệnh ant của chúng tôi bằng cách nào đó có thể xóa chúng khi thực hiện dọn dẹp, nhưng đôi khi tôi cần xóa thư mục workarea (nơi tất cả các tệp tạm thời đi) mà không thực sự làm sạch hoàn toàn khỏi ant.

Đây là lỗi tương tự câu hỏi này , nhưng câu trả lời ở đó không thực sự phù hợp với tôi vì tôi đang xử lý một thư mục, không phải tệp và tôi luôn không biết các tệp hoặc thư mục con cụ thể nào gây ra sự cố. Và tôi đang cố gắng tránh mọi quá trình thủ công (ngoài việc kích hoạt một lệnh duy nhất) để thực sự xóa chúng.

Nếu tôi thử xóa thư mục khỏi Explorer, tôi gặp lỗi

Cannot delete [file name]: The file name you specified is not valid or too long.  
Specify a different file name

Thử Remove-Itemtrong powershell đưa ra lỗi sau:

Remove-Item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
At line:1 char:12
+ Remove-Item  <<<< -force -Recurse <directory>

Có ai biết bất kỳ công cụ hoặc cách dễ dàng nào để khắc phục lỗi xóa này mà không phải tự tìm các tệp vấn đề và di chuyển / đổi tên chúng không?


2
Tôi đã tìm thấy giải pháp ngay trước khi đăng câu hỏi này, nhưng vì những người khác có thể gặp phải vấn đề này nên tôi quyết định đăng nó để họ có thể tìm ra giải pháp mà tôi đã chạy qua.
Herms

Ồ tôi biết, nhưng nói chung khi tôi làm những việc như thế này, tôi để lại câu hỏi "chưa được trả lời" trong một thời gian để xem có ai có giải pháp tốt hơn không.
Herms

By Far giải pháp đơn giản nhất: youtube.com/watch?v=qQTyTprFAOg
TaW

bằng cách sử dụng Ubuntuhoặc bất kỳ thứ gì khác, Linux Bootable CDchúng tôi có thể khởi động máy tính của chúng tôi Ubuntuhoặc bất kỳ HĐH nào khác trong thời gian ngắn. Sau đó, chúng tôi có thể chọn thư mục và chúng tôi có thể xóa nó dễ dàng.
Kelum Priyadarshane

1
Câu hỏi cũ hơn này cũng có một số câu trả lời thú vị: superuser.com/questions/45697/
Khăn

Câu trả lời:


421

Sử dụng Trình quản lý tệp 7-Zip để xóa chúng.

Nếu bạn vẫn gặp sự cố, hãy đảm bảo rằng bạn sử dụng Shift+ Deletebên trong Trình quản lý tệp 7-Zip. Mặt khác, Windows cố gắng di chuyển chúng vào Thùng rác (sẽ lại thất bại).


5
Cảm ơn - điều này đã loại bỏ một cây dir đã đi một chút đệ quy và quá sâu để del / rmdir / rm / explorer loại bỏ
Martin Beckett

63
đã hoạt động rất tốt khi sử dụng shift + Del - 7zip không thể gửi các tệp có đường dẫn dài đến thùng rác ....
cori

66
+1 7zip. Bạn phải điều hướng đến thư mục và THEN sử dụng shift + Delnhư @cori đã nói. Nếu bạn chọn Deletetùy chọn từ menu ngữ cảnh, nó sẽ thất bại ở đó. shift + Del
Urda

8
7zip không hoạt động cho win7 64, vì vậy linux đã làm.
Erik Friesen

13
Tôi upvote điều này bởi vì với 7zip bạn có thể xóa cũng xóa một thư mục chứa các thư mục lồng nhau dài bên trong. Có vấn đề của tôi với một thư mục node_module chứa hàng tấn thư mục lồng nhau và tôi không thể xóa nó. 7zip cố định từ thư mục cơ sở hoàn hảo. +1
Gruber

310

Không có câu trả lời nào khác (miễn phí) ở đây có hiệu quả với tôi, nhưng tôi đã tìm thấy một câu trả lời trên một trang web khác:

rimraf <dir>

rimraf là gói Node.js , vì vậy bạn sẽ cần cài đặt Node.js bao gồm npm . Sau đó, bạn có thể chạy:

npm install -g rimraf

Sau đó, bạn có thể chạy rimraftừ dòng lệnh.

Tôi tìm thấy giải pháp này bởi vì chính npm đã gây ra vấn đề này do cách nó làm tổ phụ thuộc.

Nhân tiện, rimraflấy tên của nó từ lệnh UNIX rm -rf, trong đó đệ quy xóa các tệp và thư mục.


7
Đã thử nhiều cách. Điều này chỉ hoạt động hoàn hảo!
Duckegg

2
Câu trả lời hay nhất trong tất cả :) vâng, thật dễ dàng
Al-Mothafar 8/12/2015

2
Đây phải là câu trả lời được chấp nhận.
NINCOMPOOP

13
Giải pháp của bạn hoạt động nhưng điều này quá tệ đến nỗi tôi phải sử dụng mô-đun js nút để xóa các thư mục mô-đun js nút ... Tôi không muốn sống trên hành tinh này nữa
Benoit P

4
Node đã tạo ra vấn đề ngay từ đầu đối với tôi rất ... thú vị ... rằng họ cũng có một giải pháp.
Eric J.

141

Không cần phải cài đặt bất kỳ chương trình để giải quyết vấn đề này.

Vấn đề này được giải quyết dễ dàng bằng cách sử dụng robocopy, được cài đặt sẵn từ Windows Vista, ra mắt năm 2006.

Ví dụ, rmdir /S /Q <dir>đã được báo cáo là thất bại trong một số trường hợp. Không cần sử dụng 7zip hoặc bất kỳ công cụ bên thứ 3 nào khác. Powershell là một quá mức cần thiết. Cygwin có thể hoạt động, nhưng bạn có thể chưa cài đặt nó. Vì vậy, hãy tập trung vàorobocopy

Ý tưởng là để

  1. sử dụng robocopyđể sao chép + cập nhật
  2. từ một thư mục trống mới
  3. vào thư mục bạn muốn xóa, mục tiêu.

Sau khi thực hiện robocopy, thư mục đích cũng sẽ trống.

Các hướng dẫn này là dành cho dòng lệnh. Chỉ cần mở tìm kiếm trong Windows, nhập cmdvà nhấn Enter.

Hãy nói rằng mục tiêu để xóa là:

C:\delete\this folder\with a very long name

Chúng tôi tiến hành như sau:

  1. Đầu tiên tạo một thư mục trống, fi C:\emptyfolder.

    mkdir C:\emptyfolder
    
  2. Sao chép + cập nhật từ thư mục trống vào mục tiêu, sử dụng tùy chọn /purge

    robocopy c:\emptyfolder "C:\delete\this folder\with a very long name" /purge
    
  3. Xóa thư mục trống. Bạn không cần nó nữa.

    rmdir c:\emptyfolder
    

Vì không có tệp hoặc thư mục trong thư mục nguồn ( C:\emptyfolder), nên nó chỉ cần xóa các tệp và thư mục trong thư mục đích ( C:\delete\this folder\with a very long name) theo cách đệ quy!

  • Bí quyết cuối cùng: bạn có thể tránh viết bằng tay

    C:\delete\this folder\with a very long name
    

    Bằng cách kéo thư mục từ cửa sổ Explorer và thả vào cửa sổ Terminal / cmd.

Hãy cẩn thận : Các tập tin bị xóa sẽ không vào thư mục thùng rác ! Sau khi xóa, các tập tin không thể được phục hồi.

(Lấy từ "Đường dẫn quá dài? Sử dụng Robocopy" của BVLANGEN )

PS: Tôi nhận ra câu trả lời này là ở đây, ít thực hiện. 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]

Benoit đã thêm:

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.


11
Cảm ơn bạn tốt thưa ngài !! Đây phải là câu trả lời được chấp nhận vì tất cả những câu hỏi khác đều không hoạt động hoặc yêu cầu công cụ của bên thứ 3 . :)
MickyD

Điều này hoạt động hoàn hảo ... không cần phải cài đặt bất cứ điều gì (theo như tôi biết) và nó nhanh chóng. Đây phải là câu trả lời được chấp nhận!
ksumarine

1
Điều này giữ một số (hoặc tất cả) của cây thư mục trong "c: \ deletefolder" (thư mục đích). Dù sao, đã xóa tất cả mọi thứ trong nháy mắt đối với tôi (đoán các tệp nhỏ) và tôi chỉ phải thủ công <Del> "c: \ deletefolder", các thư mục con đã bị xóa mà không gặp sự cố. Làm việc như người ở. +1, nên là câu trả lời được chấp nhận! :)
rld.

@rld, nhưng "deletefolder" đã tồn tại trước đây? Mặt khác, tôi nghĩ nó nên trống nếu nó là một thư mục mới. Nếu không thì đó là một mớ hỗn độn. Tôi có thể thêm một bước cuối cùng cho "rmdir deletefolder".
hectorpal

1
Khi xử lý các thư mục có tính đệ quy cao, tùy chọn này chậm hơn nhiều so với 7zip. Sau khi chờ đợi 20 phút, tôi đã điểm chuẩn chúng và nhận ra 7zip, mặc dù không cho thấy tiến trình đang chạy nhanh hơn 50 lần.
Andy đo

84

Tôi tin rằng tôi đã tìm ra cách để xóa mọi thứ cmd. Ban đầu tôi đã thử dellệnh, nhưng nó không hoạt động. Rồi tôi nhớ rmdir. Làm như sau:

rmdir /S /Q <dir>

dường như đã làm việc


105
Không làm việc cho tôi. :(
Andrew Arnott

nhớ thả vào cmd trước khi bạn cố chạy rmdir.
brianpeiris

8
Đối với những người không thể sử dụng giải pháp này, tôi có một giải pháp thay thế phù hợp với tôi (với tên đường dẫn / tên tệp quá dài): Di chuyển tệp (s) / thư mục sang C: \ để rút ngắn đường dẫn, sau đó xóa từ đó.
Anders Sandberg Nordbø

6
Có thể có các thư mục mà giải pháp này sẽ không hoạt động, 7-Zip có thể xóa. Tôi chỉ có điều này xảy ra với tôi.
SamStephens

2
Giải pháp này đang thu được kết quả không nhất quán. Xin vui lòng, không bỏ phiếu lên.
hectorpal

29

Công cụ mà tôi đã sử dụng khi gặp vấn đề này là FastCopy . Tôi đã chọn Xóa tất cả từ danh sách thả xuống, chọn thư mục tôi muốn xóa và nhấp vào Xóa tất cả .

FastCopy xóa ảnh chụp màn hình hộp thoại

FastCopy là thiết bị di động (không cần cài đặt) và có sẵn phiên bản 32 bit và 64 bit.


3
Nếu bạn đang tìm kiếm một công cụ dòng lệnh, bạn có thể sử dụng một công cụ nhỏ mà tôi đã xuất bản trên GitHub ( github.com/epsitec/Tools-RecursiveDelete ).
Pierre Arnaud

Tôi đã có một tập hợp đệ quy của tập tin / thư mục lồng nhau. Đây là giải pháp duy nhất có hiệu quả
Pierluigi

2
Điều này làm việc cho tôi khi, công cụ dòng lệnh thất bại, lần thử 7zip không thành công. và thậm chí hỗ trợ của Microsoft đã bị cản trở!
Bộ Ramos

Tương tự ở đây - Tôi đã bắt đầu xóa các tệp bằng 7zip, nhưng nó cũng hoạt động rất kỳ lạ và tôi đã phải Shift + Delere mỗi thư mục nhiều lần liên tiếp để thực sự xóa nó, nhưng sau đó tôi đã thử công cụ này và hoạt động như một bùa mê . Ra mắt nó hai lần để thoát khỏi tất cả các tập tin. Cảm ơn!
Artanis

Cảm ơn, cho tôi cũng là giải pháp làm việc duy nhất, TUYỆT VỜI !!!!
tim

26

Không cần cài đặt phần mềm bổ sung, bạn có thể sử dụng substlệnh để tạm thời tạo bí danh cho một thư mục có tên dài.

ví dụ: Nếu bạn muốn xóa thư mục, C:\Very long directory\that exceed\length limit\blah blah blah\abcde\folder to be deletedbạn có thể sử dụng lệnh

subst x: "C:\Very long directory\that exceed\length limit\blah blah blah\abcde"

và sau đó bạn có thể xóa X:\folder to be deletedtrong Windows Explorer hoặc trong dấu nhắc lệnh một cách dễ dàng. Để xóa bí danh ký tự ổ đĩa tạm thời, hãy sử dụng lệnh

subst x: /d

Tôi đã thử tất cả các câu trả lời khác (bao gồm cả câu trả lời từ các câu hỏi tương tự khác) và đây là câu duy nhất cuối cùng làm việc cho tôi. Và đó là nhanh nhất.
glenneroo

1
Đây là câu trả lời tốt nhất: các tính năng đơn giản, tích hợp sẵn, không có vòng lộn xộn với sổ đăng ký. Nên là câu trả lời được chấp nhận.
Kevin Roche

Dễ dàng là phương pháp sạch nhất và đơn giản nhất, cảm ơn bạn Kenneth.
Seth

Uh câu trả lời này làm tôi sợ vì tôi thực sự có ổ X :. Không có đủ thông tin ở đây và tôi không khuyên mọi người theo dõi điều này mà không giải thích thêm.
qodeninja

25

Cygwin rm -rfhoạt động tốt trên những con đường dài!


3
Cygwin đã làm việc cho tôi một cách hoàn hảo! Chỉ cần làm một -rm -rf và tất cả các tệp đã bị xóa.
Ranhiru Jude Cooray

3
Làm việc cho tôi cũng như theo bash GNU, phiên bản 4.1.10 (4)
rjzii

2
Hoạt động rất tốt khi chạy từ cửa sổ lệnh Git Bash. Tôi đã cài đặt GitGui cho điều đó.

22

Chỉ cần thả từ Powershell vào lệnh bằng cách chạy bên dưới:

Cmd /C "rmdir /S /Q <dir>" 

3
"Thư mục không rỗng". Úi. OP muốn xóa một thư mục không trống.
leye0

Điều này khác với câu trả lời của @herms như thế nào?
bigbadmouse

18

Giải pháp của Nha sĩ là những gì làm việc tốt nhất cho tôi, nhưng tôi muốn đăng các bước cụ thể trong một câu trả lời cấp cao nhất.

  1. Tải xuống và cài đặt bản dựng ổn định mới nhất của 7zip .
  2. Chạy Trình quản lý tệp 7zip ( 7zfm.exe ).
  3. Trong Trình quản lý tệp 7zip, điều hướng để bạn có thể thấy tên của thư mục bạn muốn xóa (tức là bạn đang ở trong thư mục mẹ).
  4. Giữ nút Shift.
  5. Nhấp vào nút " Xóa ", trên bàn phím của bạn hoặc trên thanh công cụ Trình quản lý tệp 7zip; đảm bảo bạn vẫn đang giữ phím Shift .
  6. Nhấp vào nút " OK "; đảm bảo bạn vẫn đang giữ phím Shift .

Thử rất hay nhưng vẫn không hiệu quả với tôi với các thư mục đệ quy 10 giây. Chỉ rimraf làm việc.
Julian Knight

@JulianKnight: Vâng, cách tiếp cận này cũng không kết thúc với tôi 100%. Tôi chỉ muốn đề cập đến nó bởi vì nó là một trong những quy trình đơn giản hơn và ít nhất nó đã hoạt động được một phần thời gian. Điều duy nhất tôi thấy rằng đã hoạt động 100% thời gian là cách tiếp cận tập lệnh mô-đun Powershell + NTFSSecurity, mà tôi đã mô tả bên dưới. IIRC rimraf đã thất bại khi được gọi, đó là cách tôi đã gặp rắc rối này ngay từ đầu. Xem chủ đề Node.js này để biết chi tiết: github.com/nodejs/node-v0.x-archive/issues/ chủ
Mass Dot Net

Vâng, sẽ luôn có những vấn đề như thế. Trong thực tế, đó là mã cài đặt thư viện của Arduino IDE đã đưa tôi vào (Java), tôi đã vô tình chọn thư mục chứa các thư viện làm thư mục để cài đặt thư viện từ đó và tắt nó đi! Tôi đã giết quá trình ngay khi tôi nhận ra nhưng đã có 10 thư mục k (chết tiệt i7 / SSD!) Bản phát hành chính tiếp theo của NPM có nghĩa là giúp giải quyết nhiều vấn đề cài đặt thư viện sâu cho Node vì phải đáp ứng phụ thuộc một cấu trúc phẳng hơn nhiều. Tuy nhiên, tôi thực sự rất vui khi có ai đó đưa tôi đến với rimraf - dễ dàng và miễn phí.
Julian Knight

@JulianKnight - Đúng, một hoặc hai ngày trước ai đó đã nói với tôi rằng npm3 sẽ giúp giảm bớt những vấn đề này bằng cách ngăn chặn các cấu trúc thư mục phụ thuộc lồng nhau sâu.
Mass Dot Net

Không biết liệu nó có "ngăn chặn" hay không nhưng nó xử lý các phụ thuộc lồng nhau một cách hợp lý hơn để nếu ứng dụng chính của bạn yêu cầu thư viện X v1.0 và thư viện Y yêu cầu Z cũng yêu cầu X v1.0, thư viện cấp cao nhất sẽ được sử dụng. Hiện tại Z sẽ cài đặt phiên bản X. của riêng mình
Julian Knight

11

Có hai điều chưa được đề cập trong các câu trả lời hiện có.

  1. Bạn có thể sử dụng tiền tố đường dẫn mở rộng để truy cập các đường dẫn dài
  2. Với Windows 10, bạn có thể kích hoạt hỗ trợ đường dài cho sử dụng chung - tuy nhiên, lưu ý rằng không phải tất cả các ứng dụng sẽ hoạt động với các đường dẫn dài, bạn nên kiểm tra phần mềm cũ hơn. Chỉ phần mềm có mục nhập bảng kê khai phù hợp mới có thể sử dụng phần mềm này.

Tiền tố đường dẫn dài

API Windows có một chức năng đặc biệt hỗ trợ tên đường dẫn Unicode dài tối đa 32k ký tự (mỗi phần tử có độ dài tối đa 255 ký tự).

Điều này thường được gọi nhầm là đặt tên UNC nhưng nó không liên quan.

Tiền tố được sử dụng để báo cho API sử dụng các đường dẫn Unicode dài \\?\như trong:

\\?\D:\very long path

Tên UNC thường được sử dụng khi đề cập đến các đường dẫn trên các máy chủ từ xa trong biểu mẫu \\servername\path name\file name. Bạn có thể kết hợp điều này với tiền tố đường dẫn dài để:\\?\UNC\server\share

Lưu ý rằng một số ứng dụng được viết kém nhưng khá buồn, không hỗ trợ đường dẫn tệp UNC cũng như tiền tố đường dẫn dài.

Tham khảo: https://msdn.microsoft.com/en-gb/l Library / windows / desktop / aa365247 (v = vs85) .aspx # maxpath

Hỗ trợ đường dài

Đây là một tùy chọn đã được thêm vào các phiên bản gần đây của Windows 10. Nó không, tại thời điểm viết, được kích hoạt theo mặc định vì nó yêu cầu hỗ trợ ứng dụng cụ thể. Thật thú vị, PowerShell có hỗ trợ tích hợp sẵn nên việc bật tùy chọn này sẽ cho phép các đường dẫn dài được sử dụng trực tiếp trong các tập lệnh PowerShell.

Bạn có thể kích hoạt nó thông qua trình chỉnh sửa Chính sách nhóm nếu bạn có phiên bản Windows với điều đó. Hoặc bạn chỉ có thể sử dụng thay đổi Registry sau đây. Như mọi khi, vui lòng sao lưu phần đăng ký bạn đang thay đổi trước khi làm bất cứ điều gì.

  1. Chạy đi regedit.exe.
  2. Xác nhận lời nhắc UAC.
  3. Điều hướng đến phím: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{48981759-12F2-42A6-A048-028B3973495F}Machine\System\CurrentControlSet\Policies
  4. Tạo hoặc thay đổi khóa LongPathsEnabled.
  5. Nếu nó không tồn tại, nhấp chuột phải vào Chính sách và chọn Giá trị mới> Từ khóa (32-bit) từ menu.
  6. Đặt LongPathsEnabledđể 1kích hoạt.

Bất kỳ ứng dụng nào có mục nhập bảng kê khai phù hợp giờ đây sẽ có quyền truy cập vào các đường dẫn dài tiêu chuẩn POSIX. Điều này sẽ bao gồm các ứng dụng Windows Store.

Tham khảo: https://bloss.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/

CẬP NHẬT 2017-04-09

@maoizm đã chỉ ra một vấn đề với khoá đăng ký ở trên nên tôi đã đào thêm một số thứ . Có vẻ như bây giờ bạn có thể đặt hỗ trợ tên tệp dài bằng khóa hệ thống:

HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)

Điều này vẫn chỉ hoạt động đối với các ứng dụng được thiết lập cụ thể để sử dụng mặc dù (yêu cầu một mục trong tệp kê khai của ứng dụng).

Bạn cũng nên lưu ý rằng bạn không thể sử dụng tên đường dẫn tương đối với phương thức này.


{48981759-12F2-42A6-A048-028B3973495F}Machinemột phần của đường dẫn đăng ký sẽ khác nhau ở mỗi máy tính - mọi người có thể không rõ ràng
maoizm

1
@maoizm - Điểm hay, cảm ơn vì đã làm nổi bật điều đó. Vui lòng xem bản cập nhật của tôi để thay thế nếu sử dụng bản cập nhật W10 Anniversary trở lên.
Julian Knight

Tôi đang viết thư viện có tên FoundationIO và tôi đang cố gắng biến đường dẫn dài thành mặc định, có chức năng nào tôi có thể gọi hoặc macro tôi có thể đặt để hỗ trợ đường dài tự động được bật cho bất kỳ người dùng nào trong thư viện của tôi không?
MarcusJ

Xin chào Marcus, đây có phải là thư viện Windows gốc không? Nếu vậy, .NET đã có hỗ trợ cần thiết như một phần của API Windows có liên quan - xin lỗi vì tôi không biết các chi tiết vì tôi không phải là lập trình viên .NET hoặc Win API nhưng các chi tiết nên có thể tìm kiếm được trên MSDN.
Julian Knight

8

Tôi thích giải pháp cmd. Mặc dù tôi muốn chia sẻ một cách giải quyết khác thậm chí hoạt động chỉ trong Explorer: cố gắng rút ngắn tên của các thư mục mẹ trước khi xóa: tên ngắn hơn sẽ rút ngắn đường dẫn. Giả sử, bạn có cấu trúc cây này của thư mục:

C: \

.. Dự án

.. .. Một số dự án tuyệt vời trong mùa xuân 2014

.. .. .. Một số hoạt động trong công viên trong thành phố vào thứ sáu

.. .. .. .. Bla bla bla bla bla bla bla bla bla bla bla

.. .. .. .. .. Các tập tin thực tế cũng có tên dài

Trong trường hợp này, bạn không thể xóa các thư mục, bạn cũng không thể xóa hoặc đổi tên các tệp. Nếu bạn muốn xóa toàn bộ cấu trúc thư mục hoặc một phần của nó, bạn có thể tạm thời đổi tên các thư mục mẹ và rút ngắn đường dẫn, sau đó xóa thư mục. Tên có thể chỉ là chữ cái:

C: \

.. Dự án

.. .. x

.. .. .. y

.. .. .. .. z

.. .. .. .. .. Các tập tin thực tế cũng có tên dài

Trong trường hợp của tôi, tôi chỉ muốn xóa toàn bộ thư mục với nhiều thư mục con và tập tin. Vì vậy, tôi đã không quan tâm đến tên của các thư mục.


1
Tôi đã viết một công cụ nhỏ làm việc đó và đưa nó lên GitHub. github.com/epsitec/Tools-RecursiveDelete
Pierre Arnaud

1
Tất cả các lệnh hoặc Shift + DEL không hoạt động với tôi, nhưng điều này không.
larkee 21/07/2015

Không thực sự hoạt động khi bạn có 10 thư mục lồng nhau
Julian Knight

cũng không hoạt động nếu một trong các thư mục có tên thực sự dài (bạn không thể đổi tên thư mục vi phạm).
aucuparia

7

Giải pháp 7-zip hoạt động tuyệt vời. Một tùy chọn khác nếu bạn đã cài đặt git là mở bash shell và sử dụng:

rm -f

(hoặc rm -rfcho các thư mục)


1
Đối với những người không quen biết, hãy giải thích cách bạn "mở bash shell" trong Windows?
OMY

1
@OMY bạn cần cài đặt git. Sau đó, từ menu bắt đầu, bạn có thể mở git bash hoặc nếu bạn chọn có phần mở rộng shell khi bạn cài đặt git thì bạn có thể nhấp chuột phải vào hoặc trên một thư mục và chọnGit Bash Here
Người dùng

4

Tôi đề nghị Total Commander (phần mềm chia sẻ, nhưng vẫn hoạt động sau thời gian dùng thử chỉ với màn hình bắt đầu tối thiểu). Đó là cách tôi luôn giải quyết các vấn đề về tên tệp quá dài .


1
Cảm ơn chúa tôi đã tìm thấy điều này. Có vấn đề xóa thư mục node_modules vì ​​nó quyết định lồng các thư mục một cách ngu ngốc.
Bí danh

Chà, @Alias, Total Commander giúp phát hiện vấn đề đó dễ dàng hơn, ít nhất là đối với tôi. Sau khi xác định vấn đề như vậy, chkdsknên giải quyết nó.
Sopalajo de Arrierez

Phiên bản 7.0 không hoạt động, nó hiển thị thông báo lỗi và đề nghị thực hiện thao tác với tư cách Quản trị viên, cũng không thành công.
izogfif

@izogfif: phiên bản mới nhất hiện nay là 8,52a. Tôi sẽ thử cái này Bạn không cung cấp chi tiết về thông báo lỗi của mình, nhưng bạn có thể có một số điểm không nhất quán về cấu trúc lưu trữ phải được giải quyết (ít nhất là với NTFS) với "chkdsk c: / f" (giả sử ổ C :).
Sopalajo de Arrierez

2

Bạn cũng có thể xóa chúng bằng tên ngắn tương đương của chúng. dir /xsẽ cho bạn thấy chúng


2

Tôi đã tạo một chương trình java đơn giản sử dụng robocopy để xóa các tệp. Cái bình là một cái có thể chạy được. Đối với đầu ra bổ sung chạy nó từ dòng cmd.

https://drive.google.com/file/d/0B5pSEjxJvt_1WVp1T3puSm1CNjg/view?usp=shaming


2
Và nếu bạn không muốn sử dụng Java, bạn có thể sử dụng công cụ này mà tôi đã viết bằng .NET ( github.com/epsitec/Tools-RecursiveDelete ).
Pierre Arnaud

@PierreArnaud tiện ích tuyệt vời. Tôi cần một cái gì đó như thế này để tự động hóa dòng lệnh. @ CamHart làm việc tốt từ bạn quá! Cảm ơn các bạn!
amitthk

1

Tôi đã thử tất cả các câu trả lời khác, nhưng chúng không hoạt động (ít nhất là cho tôi).

Tôi đã đi qua delinfile và làm việc khá tốt và khá nhanh chóng!

Bản dùng thử bị giới hạn ở 3 hành động / 15 ngày nhưng có thể sử dụng được nếu bạn chỉ muốn xóa một vài thư mục / tệp:


1

Thư mục lớn hơn được thiết kế cho nhiệm vụ này là tốt. nhập mô tả hình ảnh ở đây

  • Tải xuống
  • Sử dụng một cuộc gọi đệ quy với RemoveDirectoryW để xóa các thư mục hiện có
  • Sử dụng kho lưu trữ tệp riêng cho các thư mục mới được tạo
  • Các tập tin có thể được di chuyển từ các thư mục trước khi xóa các thư mục containg.
  • Nhanh chóng, mặc dù điều hướng đến đầu thư mục là một lần nhấp cho mỗi thư mục lồng nhau
  • Windows XP (SP3) trở lên
  • Mã không được quản lý không được chỉ định mà không có trình cài đặt, vì vậy có thể cảnh báo Smartscreen khi chạy từ thư mục dự phòng, ví dụ như máy tính để bàn.

Thêm thông tin tại CodeProject .


Vui lòng đọc Làm thế nào để tôi giới thiệu phần mềm cho một số mẹo về cách bạn nên giới thiệu phần mềm. Bạn nên cung cấp ít nhất một liên kết, một số thông tin bổ sung về chính phần mềm và cách sử dụng phần mềm để giải quyết vấn đề trong câu hỏi.
DavidPostill

@David: Tốt hơn? Liên kết là rất hữu ích, cảm ơn.
Laurie Stearn

1

Tôi đã đối mặt với vấn đề này trong Windows 10 và tìm thấy giải pháp dễ dàng này.

  1. Đi vào sâu hơn một chút của cây thư mục của bạn.
  2. Kéo và thả thư mục từ một nơi nào đó ở giữa cây đến nơi bắt đầu của cây bằng thanh địa chỉ.
  3. Như trong hình ảnh của tôi kéo và thả hộp màu đỏ vào hộp màu xanh lá cây. (trong trường hợp này đường dẫn ngắn hơn, nhưng đối với đường dẫn dài thì nó cũng hoạt động)
  4. Sau đó, đường dẫn của bạn trở nên ngắn hơn và xóa như bình thường bằng cách sử dụng phím xóa.

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


1

Có câu trả lời hoàn hảo ở đây (cho các tập tin). Hoạt động trong Windows 10.

REM Make sure there is no \ at the end of either path!
robocopy "C:\...\...\...\long\path" "C:\DeleteMe" "FileName" /MOV
REM Note: this ^ can be called many times before...:

REM Finally, recursively delete the higher up DeleteMe directory.
rmdir /S /Q DeleteMe

Xem thêm: https://msdn.microsoft.com/en-us/l Library / aa365247.aspx # maxpath

Không một câu trả lời thay thế nào trong 4 câu hỏi là đủ cho nhu cầu của tôi. Bạn đang chào đón thế giới.


0

Cuối cùng tôi đã tìm ra cách để làm điều này thông qua Powershell. Dưới đây là các hướng dẫn tôi đã làm theo để làm việc này trên Windows 7:

  1. Tạo một thư mục mới có tên NTFSSecurity trong thư mục C: \ Users \ XXXX \ Documents \ WindowsPowerShell \ Modules \ NTFSSecurity , trong đó XXXX là tên người dùng Windows của bạn. Ví dụ: nếu tên người dùng của tôi là " aspnyc ", thư mục mới sẽ là C: \ Users \ aspnyc \ Documents \ WindowsPowerShell \ Modules \ NTFSSecurity .

  2. Tải xuống gói Mô-đun PowerShell Mô-đun Bảo mật Hệ thống Tệp - tệp này phải có sẵn dưới dạng tệp ZIP đơn giản.

  3. Mở bảng điều khiển Powershell, chạy Get-Module -ListAv Available và đảm bảo NTFSSecurance hiển thị ở đâu đó trong danh sách các mô-đun đã đăng ký.
  4. Trong bảng điều khiển Powershell, chạy NTFSSecurity .
  5. Trong bảng điều khiển Powershell, hãy chạy Remove-Item2 "YYYY" -Recurse , trong đó YYYY là đường dẫn Windows đến thư mục bạn muốn xóa đệ quy (ví dụ: C: \ Potatoes \ Badgers \ FolderToDelete ).

0

Cuối cùng tôi đã tìm ra cách để làm điều này với Powershell trên Windows 10 nơi các tên tệp riêng lẻ quá dài. Dưới đây là các bước tôi đã làm theo để làm điều này hoạt động trên Windows 10:

  1. Tải xuống gói Mô-đun PowerShell Mô-đun Bảo mật Hệ thống Tệp - tệp này phải có sẵn dưới dạng tệp ZIP đơn giản.
  2. Trích xuất tệp Zip dưới dạng thư mục NTFSSecurity trong thư mục C: \ WINDOWS \ system32 \ WindowsPowerShell \ v1.0 \ Modules.
  3. Mở bảng điều khiển Powershell với độ cao quản trị (còn gọi là Chế độ quản trị viên) và chạy Get-Module -ListAv Available và đảm bảo NTFSSecurance hiển thị ở đâu đó trong danh sách các mô-đun đã đăng ký.
  4. Chạy Set-ExecutPolicy Không bị giới hạn để bỏ qua chế độ thực thi đã ký. Bạn phải xác nhận hành động này với Y (es)
  5. Cuối cùng cd vào thư mục mà bạn muốn xóa.
  6. Trong bảng điều khiển Powershell, chạy NTFSSecurity .
  7. Trong bảng điều khiển Powershell, chạy Remove-Item2 "YYYY" -Recurse , trong đó YYYY là đường dẫn Windows tương đối hoặc tuyệt đối đến thư mục bạn muốn xóa đệ quy (ví dụ: C: \ Potatoes \ Badgers \ FolderToDelete ).
  8. Kiểm tra nếu nó hoạt động.
  9. Cuối cùng được đặt lại về chế độ thực thi đã ký với Set-ExecutPolicy Restricted . Bạn phải xác nhận hành động này với Y (es).

0

Nếu bạn đã cài đặt Bash trên Ubuntu trên Windows, bạn có thể cd vào thư mục mẹ trong một dấu nhắc lệnh thông thường và sau đó gõ:

bash -c "rm -rf dirname_here"

Mà khởi chạy bash, xóa đệ quy thư mục từ linux, nơi không có hạn chế tên tệp, và sau đó thoát trở lại dấu nhắc lệnh thông thường của bạn.


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.