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


Windows dường như có giới hạn độ dài trên tên tệp khi cố xóa, mặc dù Windows 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 tệp được xây dựng từ WSDL) chạy vượt quá giới hạn này. Kịch bản kiến ​​của chúng tôi bằng cách nào đó có thể xóa chúng khi làm sạch, nhưng đôi khi tôi cần phải 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 từ kiến.

Đâ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ự hiệu quả đối với tôi khi tôi đang xử lý thư mục, không phải tệp, và tôi không phải lúc nào cũng biết những tệp hoặc thư mục con cụ thể nào đang gây ra sự cố. Và tôi đang cố gắng tránh bất kỳ quá trình thủ công nào (ngoài việc kích hoạt một lệnh) để thực sự xóa chúng.

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

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

Cố gắng Remove-Item trong PowerShell cung cấp cho các 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 về bất kỳ công cụ hoặc cách dễ dàng để có được xung quanh này xóa lỗi mà không cần phải tự tìm thấy các tập tin vấn đề và di chuyển / đổi tên chúng?


349
2017-12-03 19:23


gốc


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ể chạy vào điều này, tôi quyết định đăng nó để họ có thể tìm ra giải pháp mà tôi đã chạy qua. - Herms
Oh 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 "không trả lời" trong một thời gian để xem nếu có ai khác có một giải pháp tốt hơn. - Herms
Bởi Xa giải pháp đơn giản nhất: youtube.com/watch?v=qQTyTprFAOg - TaW
sử dụng Ubuntu Hay bất cứ thứ gì khác Linux Bootable CD chúng ta có thể khởi động máy tính của mình Ubuntu hoặc bất kỳ hệ điều hành nào khác cho tạm thời. sau đó chúng tôi có thể chọn thư mục và chúng tôi có thể xóa nó một cách dễ dàng. - kelum priyadarshane
Câu hỏi cũ này cũng có một số câu trả lời thú vị: superuser.com/questions/45697/… - AdamV


Các câu trả lời:


Sử dụng 7-Zip Trình quản lý tệp để xóa chúng. Sử dụng ShiftDEL nhấn mạnh Trình quản lý tệp 7zip (nếu không Windows sẽ cố gắng chuyển sang Thùng rác sẽ bị lỗi lại).


392
2017-12-03 19:48



Cảm ơn - điều này đã thoát khỏi một cây thư mục mà đã đi một chút đệ quy và quá sâu cho del / rmdir / rm / explorer để loại bỏ - Martin Beckett
làm việc tuyệt vời bằng cách 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
+1 7zip. Bạn phải điều hướng đến thư mục và THEN sử dụng shift + Del như @cori nói. Nếu bạn chọn Delete tùy chọn từ trình đơn ngữ cảnh, nó WILl thất bại ở đó. shift + Del nó! - Urda
7zip đã không làm việc cho win7 64, do đó, Linux đã làm. - Erik Friesen
Tôi upvote này bởi vì với 7zip bạn có thể xóa cũng xóa một thư mục có chứa các thư mục lồng nhau bên trong. Đã có vấn đề của tôi với một thư mục node_module có chứa rất nhiều thư mục lồng nhau và tôi đã không thể loại bỏ nó. 7zip cố định từ thư mục cơ sở hoàn hảo. +1 - Gruber


Không có câu trả lời nào khác (miễn phí) ở đây có hiệu quả đối 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à một Node.js gói, vì vậy bạn sẽ cần phải 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 rimraf từ dòng lệnh.

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

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


307
2017-07-04 06:23



Đã thử nhiều cách. Điều này chỉ hoạt động hoàn hảo! - Duckegg
Câu trả lời tốt nhất của tất cả :) có dễ dàng của nó beasy - Al-Mothafar
Đây sẽ là câu trả lời được chấp nhận. - NINCOMPOOP
Giải pháp của bạn hoạt động nhưng điều này là như vậy f ## k-up mà tôi phải sử dụng một module js nút để xóa các nút js modules modules ... Tôi không muốn sống trên hành tinh này nữa - Benoit P
Node đã tạo ra vấn đề ngay từ đầu cho tôi ... thật thú vị ... rằng họ cũng có một giải pháp. - Eric J.


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

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

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

Ý 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 thoát robocopy, thư mục đích cũng sẽ trống.

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

Giả sử thư mục chúng tôi muốn xóa, mục tiêu, là

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

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

    mkdir C: \ emptyfolder

  2. Sao chép + cập nhật từ thư mục trống sang đích, sử dụng tùy chọn "/ purge"

    robocopy c: \ emptyfolder "C: \ xóa \ thư mục này \ với một tên rất dài" / 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 nào trong thư mục nguồn (C:\emptyfolder), nó chỉ xóa các tệp và thư mục trong thư mục đích (C:\delete\this folder\with a very long name) đệ quy!

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

    C: \ xóa \ thư mục này \ với một tên rất dài

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

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

(Được lấy từ "Đường dẫn quá dài? Sử dụng Robocopy" bởi BVLANGEN)

PS: Tôi nhận ra câu trả lời này ở đây, ít hoạt động hơn. Làm thế nào để xóa một tập tin trong Windows với một tên tập tin 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 để loại bỏ tất cả các tệp.


117
2018-03-03 16:45



Cảm ơn bạn tốt sir !! Đây sẽ là câu trả lời được chấp nhận như tất cả các câu trả lời khác không làm việc hoặc yêu cầu Công cụ của bên thứ 3. :) - MickyD
Điều này làm việc 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 sẽ là câu trả lời được chấp nhận! - ksumarine
Đ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 một chớp mắt cho tôi (đoán các tập tin là nhỏ) và tôi chỉ phải tự <Del> "c: \ deletefolder", các thư mục con đã được gỡ bỏ mà không có một vấn đề. 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? Nếu không, tôi nghĩ nó sẽ 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
@hectorpal 1. Tôi đã có một cây với phần còn lại của một ổ đĩa Windows C sao lưu từ một máy khác, mà tôi quản lý để xóa trừ các phần rất dài, tức là. "% USERPROFILE% / foo / very_long_dirname / vldn2 / vldn3 /(...)/ very_long_filename". 2. cd ~; mkdir empty; robocopy empty foo /purge 3. Được để lại với ~ / foo / maybe_something_deeper_too_cant_remember / và không thực sự mất thời gian để điều tra thêm vì tôi đã tức giận với M $ vì không tôn trọng tôi và lãng phí thời gian của tôi, nhưng đơn giản <Delete> trên ~ / foo trong thám hiểm đã bị xóa nó thành công, sau khi thất bại vô tận (ngay cả với quyền sở hữu) cho đến khi robocopy. - rld.


Tôi tin rằng tôi đã tìm ra cách xóa mọi thứ từ cmd. Ban đầu tôi đã thử del lệnh, nhưng điều đó không hiệu quả. Rồi tôi nhớ ra rmdir. Làm như sau:

rmdir /S /Q <dir>

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


79
2017-12-03 19:24



Không làm việc cho tôi. :( - Andrew Arnott
nhớ để thả vào cmd trước khi bạn cố gắng chạy rmdir. - brianpeiris
Đố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ế làm việc cho tôi (với tên đường dẫn / tệp quá dài): Di chuyển (các) tệp / thư mục sang C: \ để rút ngắn đường dẫn, sau đó xóa từ đó. - Anders Sandberg Nordbø
Có thể có các thư mục mà giải pháp này sẽ không hoạt động, mà 7-Zip có thể xóa. Tôi chỉ có điều này xảy ra với tôi. - SamStephens
Giải pháp này có được kết quả không phù hợp. Làm ơn, đừng bỏ phiếu. - hectorpal


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

FastCopy delete dialog screenshot

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


29
2017-11-25 20:22



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 được tạo một cách đệ quy của tập tin / thư mục lồng nhau. Đây là giải pháp duy nhất hoạt động - Pierluigi
Điều này làm việc cho tôi khi, công cụ dòng lệnh thất bại, nỗ lực 7zip thất bại. và thậm chí cả sự hỗ trợ của Microsoft đã bị bóp nghẹt! - Kit Ramos
Tương tự ở đây - tôi bắt đầu xóa các tập tin với 7zip, nhưng nó cũng hoạt động rất lạ và tôi phải Shift + Delere mỗi thư mục nhiều lần liên tiếp để xóa nó, nhưng sau đó tôi đã thử công cụ này và làm việc như một sự quyến rũ . Khởi chạy nó hai lần để loại bỏ tất cả các tệp. Cảm ơn! - Artanis
Cảm ơn, đối với tôi cũng là giải pháp làm việc duy nhất, GREAT !!!! - tim


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


24
2017-09-26 19:40



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 tin đã bị xóa. - Ranhiru Cooray
Làm việc cho tôi cũng dưới GNU bash, phiên bản 4.1.10 (4) -release - rjzii
Làm việc rất tốt khi chạy từ cửa sổ lệnh Git Bash. Tôi đã cài đặt GitGui cho điều đó. - Albo Best


Không cần cài đặt phần mềm bổ sung, bạn có thể sử dụng subst lệnh để tạo tạm thời một 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 deleted bạ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 deleted trong Windows Explorer hoặc trong dấu nhắc lệnh dễ dàng. Để loại bỏ bí danh ký tự ổ đĩa tạm thời, hãy sử dụng lệnh

subst x: /d

23
2017-10-28 06:09



Tôi đã thử tất cả các câu trả lời khác (bao gồm câu trả lời từ các câu hỏi tương tự khác) và đây là câu trả lời duy nhất kết thúc với tôi. Và nó là nhanh nhất. - glenneroo
Đây là câu trả lời tốt nhất cho đến nay: 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 registry. Nên là câu trả lời được chấp nhận. - Kevin Roche
Dễ dàng là phương pháp đơn giản nhất và dễ hiểu nhất, cảm ơn Kenneth. - Seth