Cara menghapus direktori dengan jalur / nama terlalu lama untuk penghapusan normal

380

Windows tampaknya memiliki batasan panjang pada nama file ketika mencoba untuk menghapus, meskipun itu tidak akan mencegah file tersebut dibuat.

Proses build kami membuat sejumlah file sementara (banyak build dari WSDL) yang berjalan di luar batas ini. Skrip semut kami entah bagaimana dapat menghapusnya saat melakukan pembersihan, tapi kadang-kadang saya perlu menghapus direktori workarea (tempat semua file temp pergi) tanpa benar-benar melakukan pembersihan penuh dari semut.

Ini adalah kesalahan yang sama dengan pertanyaan ini , tetapi jawaban di sana tidak benar-benar bekerja untuk saya karena saya berurusan dengan direktori, bukan file, dan saya tidak selalu tahu file atau subdirektori spesifik apa yang menyebabkan masalah. Dan saya mencoba untuk menghindari proses manual (selain memicu satu perintah) untuk benar-benar menghapusnya.

Jika saya mencoba menghapus direktori dari Explorer saya mendapatkan kesalahan

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

Mencoba Remove-Itemdi PowerShell memberikan kesalahan berikut:

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>

Adakah yang tahu alat atau cara mudah untuk mengatasi kesalahan penghapusan ini tanpa harus secara manual menemukan file masalah dan memindahkan / mengganti nama mereka?

Herms
sumber
2
Saya menemukan solusi tepat sebelum memposting pertanyaan ini, tetapi karena orang lain mungkin mengalami ini, saya memutuskan untuk mempostingnya sehingga mereka dapat menemukan solusi yang saya temui.
Herms
Oh saya tahu, tetapi secara umum ketika saya melakukan hal-hal seperti ini saya meninggalkan pertanyaan "tidak dijawab" untuk sementara waktu untuk melihat apakah ada orang lain yang memiliki solusi yang lebih baik.
Herms
Dengan Jauh solusi yang paling sederhana: youtube.com/watch?v=qQTyTprFAOg
TAW
menggunakan Ubuntuatau yang lain Linux Bootable CDkita bisa boot komputer kita ke Ubuntuatau OS lain untuk sementara. maka kita dapat memilih folder dan kita dapat menghapusnya dengan mudah.
Kelum Priyadarshane
1
Pertanyaan yang lebih lama ini memiliki beberapa jawaban menarik juga: superuser.com/questions/45697/…
AdamV

Jawaban:

421

Gunakan 7-Zip File Manager untuk menghapusnya.

Jika Anda masih mengalami masalah, pastikan Anda menggunakan Shift+ Deletedi dalam 7-Zip File Manager. Kalau tidak, Windows mencoba memindahkannya ke Recycle Bin (yang akan gagal lagi).

Dentrasi
sumber
5
Terima kasih - ini menghilangkan pohon dir yang menjadi sedikit rekursif dan terlalu dalam untuk dihapus oleh del / rmdir / rm / explorer
Martin Beckett
63
bekerja sangat baik menggunakan shift + Del - 7zip tidak bisa mengirim file lama ke recycle bin ....
cori
66
+1 7zip. Anda harus menavigasi ke folder, dan MAKA gunakan shift + Delseperti kata @cori. Jika Anda memilih Deleteopsi dari menu konteks, itu AKAN gagal di sana. shift + Delsaya t!
Urda
8
7zip tidak berfungsi untuk win7 64, begitu juga linux.
Erik Friesen
13
Saya memilih ini karena dengan 7zip Anda dapat menghapus juga menghapus folder yang berisi folder bersarang panjang di dalamnya. Punya masalah saya dengan folder node_module yang berisi omong kosong folder bersarang dan saya tidak dapat menghapusnya. 7zip diperbaiki dari folder dasar dengan sempurna. +1
Gruber
310

Tidak ada jawaban lain (gratis) di sini yang berfungsi untuk saya, tetapi saya menemukan satu di situs lain:

rimraf <dir>

rimraf adalah paket Node.js , jadi Anda harus menginstal Node.js yang mencakup npm . Maka Anda dapat menjalankan:

npm install -g rimraf

Kemudian Anda bisa lari rimrafdari baris perintah.

Saya menemukan solusi ini karena npm sendiri yang menyebabkan masalah ini karena cara itu bersarang dependensi.

Omong-omong, rimrafdapatkan namanya dari perintah UNIX rm -rf, yang secara rekursif menghapus file dan folder.

jordanbtucker
sumber
7
Mencoba banyak cara. Ini hanya bekerja dengan sempurna!
Duckegg
2
Jawaban terbaik dari semua :) ya itu mudah
Al-Mothafar
2
Ini harus menjadi jawaban yang diterima.
NINCOMPOOP
13
Solusi Anda berfungsi tetapi ini sangat f ## k-up sehingga saya harus menggunakan modul node js untuk menghapus folder node modul js ... Saya tidak ingin hidup di planet ini lagi
Benoit P
4
Node menciptakan masalah bagi saya begitu ... menarik ... bahwa mereka juga punya solusi.
Eric J.
141

Tidak perlu menginstal program apa pun untuk menyelesaikan masalah ini.

Masalah ini mudah dipecahkan dengan menggunakan robocopy, diinstal sejak Windows Vista, diluncurkan pada 2006.

Misalnya, rmdir /S /Q <dir>telah dilaporkan gagal dalam beberapa kasus. Tidak perlu menggunakan 7zip atau alat pihak ke-3 lainnya. Powershell adalah pembunuhan berlebihan. Cygwin mungkin berfungsi, tetapi Anda mungkin belum menginstalnya. Jadi, mari kita fokusrobocopy

Idenya adalah untuk

  1. gunakan robocopyuntuk menyalin + diperbarui
  2. dari folder kosong baru
  3. ke folder yang ingin Anda hapus, target.

Setelah dieksekusi robocopy, direktori target juga akan kosong.

Instruksi ini untuk baris perintah. Cukup buka pencarian di Windows, ketik cmddan tekan Enter.

Katakanlah target untuk dihapus adalah:

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

Kami melanjutkan sebagai berikut:

  1. Pertama buat direktori kosong, fi C:\emptyfolder.

    mkdir C:\emptyfolder
    
  2. Salin + perbarui dari direktori kosong ke target, menggunakan opsi /purge

    robocopy c:\emptyfolder "C:\delete\this folder\with a very long name" /purge
    
  3. Hapus direktori kosong. Anda tidak membutuhkannya lagi.

    rmdir c:\emptyfolder
    

Karena tidak ada file atau folder di direktori sumber ( C:\emptyfolder), itu hanya menghapus file dan folder di bawah direktori target ( C:\delete\this folder\with a very long name) secara rekursif!

  • Trik terakhir: Anda dapat menghindari menulis dengan tangan

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

    Dengan menyeret folder dari jendela Explorer dan menjatuhkannya di jendela Terminal / cmd.

Hati-hati : File yang dihapus tidak akan masuk ke folder tempat sampah ! Setelah dihapus, file tidak dapat dipulihkan.

(Diambil dari "Path terlalu lama? Gunakan Robocopy" oleh BVLANGEN )

PS: Saya sadar jawaban ini ada di sini, kurang didaktis. Bagaimana cara menghapus file di Windows dengan nama file yang terlalu panjang? [duplikat]

Benoit menambahkan:

Anda mungkin harus melalui proses ini lebih dari sekali untuk menyingkirkan semua file.

hectorpal
sumber
11
Terima kasih tuan yang baik !! Ini harus menjadi jawaban yang diterima karena semua yang lain tidak berfungsi atau membutuhkan alat pihak ke - 3 . :)
MickyD
Ini berfungsi dengan baik ... tidak perlu menginstal apa pun (sejauh yang saya tahu) dan cepat. Ini harus menjadi jawaban yang diterima!
ksumarine
1
Ini membuat beberapa (atau semua) pohon direktori di bawah "c: \ deletefolder" (target dir). Bagaimanapun, menghapus semuanya dalam sekejap untuk saya (tebak file-file itu kecil) dan saya hanya harus secara manual <Del> "c: \ deletefolder", direktori anak-anak dihapus tanpa masalah. Bekerja seperti pesona. +1, harus menjadi jawaban yang diterima! :)
rld.
@rld, tetapi apakah "penghapusan" sudah ada sebelumnya? Kalau tidak, saya pikir itu harus kosong jika itu adalah direktori baru. Kalau tidak, itu berantakan. Saya bisa menambahkan langkah terakhir untuk "rmdir deletefolder".
hectorpal
1
Ketika berhadapan dengan direktori yang sangat rekursif, opsi ini jauh lebih lambat daripada 7zip. Setelah menunggu 20 menit, saya membuat tolok ukur mereka dan menyadari 7zip, meskipun tidak menunjukkan kemajuan berjalan 50x lebih cepat.
Andy Gauge
84

Saya yakin saya telah menemukan cara untuk menghapus sesuatu cmd. Awalnya saya mencoba delperintah itu, tetapi itu tidak berhasil. Lalu aku ingat rmdir. Melakukan hal berikut:

rmdir /S /Q <dir>

sepertinya sudah bekerja.

Herms
sumber
105
Tidak bekerja untuk saya. :(
Andrew Arnott
ingat untuk jatuh ke cmd sebelum Anda mencoba menjalankan rmdir.
brianpeiris
8
Bagi mereka yang tidak dapat menggunakan solusi ini, saya memiliki solusi alternatif yang bekerja untuk saya (dengan path terlalu panjang / nama file): Pindahkan file (s) / direktori ke C: \ untuk mempersingkat path, lalu hapus dari sana.
Anders Sandberg Nordbø
6
Dimungkinkan untuk memiliki direktori yang tidak dapat digunakan oleh solusi ini, yang dapat dihapus 7-Zip. Saya baru saja mengalami hal ini pada saya.
SamStephens
2
Solusi ini mendapatkan hasil yang tidak konsisten. Tolong, jangan memilih itu.
hectorpal
29

Alat yang saya gunakan ketika saya memiliki masalah ini adalah FastCopy . Saya memilih Delete All dari dropdown, memilih direktori yang ingin saya hapus, dan mengklik Delete All .

Tangkapan layar dialog hapus FastCopy

FastCopy portable (tidak perlu instalasi), dan ada versi 32 bit dan 64 bit yang tersedia.

keberanian
sumber
3
Jika Anda mencari alat baris perintah, Anda bisa menggunakan alat kecil yang saya publikasikan di GitHub ( github.com/epsitec/Tools-RecursiveDelete ).
Pierre Arnaud
Saya memiliki satu set file / folder bersarang yang dihasilkan secara rekursif. Ini adalah satu-satunya solusi yang berfungsi
Pierluigi
2
Ini bekerja untuk saya ketika, hal-hal baris perintah gagal, upaya 7zip gagal. dan bahkan dukungan Microsoft bingung!
Kit Ramos
Sama di sini - saya agak mulai menghapus file dengan 7zip, tetapi juga bertindak sangat aneh dan saya harus Shift + Delere setiap direktori beberapa kali berturut-turut untuk benar-benar menghapusnya, tetapi kemudian saya mencoba alat ini, dan bekerja seperti pesona . Meluncurkannya dua kali untuk menyingkirkan semua file. Terima kasih!
Artanis
Terima kasih, untuk saya juga satu-satunya solusi yang berfungsi, Hebat !!!!
tim
26

Tanpa menginstal perangkat lunak tambahan, Anda dapat menggunakan substperintah untuk membuat alias sementara ke direktori yang telah lama dinamai.

mis. Jika Anda ingin menghapus folder C:\Very long directory\that exceed\length limit\blah blah blah\abcde\folder to be deletedAnda dapat menggunakan perintah

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

dan kemudian Anda dapat menghapus X:\folder to be deleteddi Windows Explorer atau di command prompt dengan mudah. Untuk menghapus huruf drive sementara alias gunakan perintah

subst x: /d
Kenneth L.
sumber
Saya mencoba semua jawaban lain (termasuk jawaban dari pertanyaan serupa lainnya) dan ini adalah satu-satunya yang akhirnya berhasil untuk saya. Dan itu yang tercepat.
glenneroo
1
Sejauh ini, inilah jawaban terbaik: sederhana, fitur bawaan, tidak main-main dengan registri. Seharusnya jawaban yang diterima.
Kevin Roche
Metode yang paling mudah dan paling mudah, terima kasih Kenneth.
Seth
Eh jawaban ini membuatku takut karena aku benar-benar memiliki drive X :. Tidak ada informasi yang cukup di sini dan saya tidak menyarankan orang mengikuti ini tanpa penjelasan lebih lanjut.
qodeninja
25

Cygwin rm -rfbekerja dengan baik di jalur panjang!

gdw2
sumber
3
Cygwin bekerja untukku dengan sempurna! Baru saja melakukan -rm -rf dan semua file terhapus.
Ranhiru Jude Cooray
3
Bekerja untuk saya juga di bawah GNU bash, versi 4.1.10 (4) -release
rjzii
2
Bekerja sangat baik ketika menjalankan dari jendela perintah Git Bash. Saya telah menginstal GitGui untuk itu.
22

Cukup turun dari Powershell ke perintah dengan menjalankan di bawah:

Cmd /C "rmdir /S /Q <dir>" 
Karl Glennon
sumber
3
"Direktori tidak kosong". Ups. OP ingin menghapus folder yang tidak kosong.
leye0
apa bedanya dengan jawaban @herms?
bigbadmouse
18

Solusi Dentrasi adalah yang paling berhasil bagi saya, tetapi saya ingin memposting langkah-langkah spesifik dalam jawaban tingkat atas.

  1. Unduh dan pasang build stabil terbaru 7zip .
  2. Jalankan 7zip File Manager ( 7zfm.exe ).
  3. Di File Manager 7zip, navigasikan sehingga Anda dapat melihat nama folder yang ingin Anda hapus (yaitu Anda berada di folder induk).
  4. Tahan tombol Shift.
  5. Klik tombol " Hapus ", baik di keyboard Anda atau di toolbar 7zip File Manager; pastikan Anda masih menahan tombol Shift .
  6. Klik tombol " OK "; pastikan Anda masih menahan tombol Shift .
Mass Dot Net
sumber
Usaha yang bagus tetapi masih tidak berhasil bagi saya dengan 10 k folder rekursif. Hanya rimraf yang bekerja.
Julian Knight
@JulianKnight: Ya, pendekatan ini tidak berakhir untuk saya 100%, juga. Saya hanya ingin menyebutkannya karena itu adalah salah satu proses yang lebih mudah, dan setidaknya berfungsi sebagian waktu. Satu-satunya hal yang saya temukan yang telah bekerja 100% dari waktu adalah pendekatan skrip modul Powershell + NTFSSecurity, yang saya jelaskan di bawah ini. Rim IIRC gagal ketika dipanggil, yang adalah bagaimana saya masuk ke kekacauan ini di tempat pertama. Lihat utas Node.js ini untuk detail: github.com/nodejs/node-v0.x-archive/issues/…
Mass Dot Net
Ya, akan selalu ada masalah seperti itu. Sebenarnya itu adalah kode instalasi perpustakaan Arduino IDE yang membuat saya masuk (Java), saya tidak sengaja memilih folder yang berisi perpustakaan sebagai folder untuk menginstal perpustakaan dari dan pergi! Saya membunuh proses segera setelah saya sadari tetapi sudah memiliki 10's dari folder (sialan i7 / SSD!) Rilis utama berikutnya dari NPM dimaksudkan untuk membantu menyelesaikan banyak masalah instalasi perpustakaan yang dalam untuk Node karena ketergantungan harus dipenuhi dari struktur yang jauh lebih datar. Tetap saya benar-benar senang seseorang menempatkan saya di rimraf - mudah dan gratis.
Julian Knight
@JulianKnight - Yap, satu atau dua hari yang lalu seseorang mengatakan kepada saya bahwa npm3 harus membantu mengatasi masalah ini dengan mencegah struktur folder dependensi yang sangat bersarang.
Mass Dot Net
Tidak tahu apakah itu "mencegah" tetapi itu memperlakukan dependensi bersarang lebih masuk akal sehingga jika aplikasi utama Anda membutuhkan pustaka X v1.0 dan pustaka Y membutuhkan Z yang juga membutuhkan X v1.0, pustaka tingkat atas akan digunakan. Saat ini Z akan menginstal versi X
Julian Knight
11

Ada dua hal yang belum disebutkan dalam jawaban yang ada.

  1. Anda dapat menggunakan awalan jalur panjang yang diperluas untuk mengakses jalur panjang
  2. Dengan Windows 10, Anda dapat mengaktifkan dukungan jalur panjang untuk penggunaan umum - namun, perhatikan bahwa tidak semua aplikasi akan bekerja dengan jalur panjang, Anda harus menguji perangkat lunak yang lebih lama. Hanya perangkat lunak dengan entri manifes yang sesuai yang dapat menggunakan ini.

Awalan Jalur Panjang

Windows API memiliki fungsi khusus yang mendukung nama jalur Unicode hingga 32k karakter (masing-masing elemen panjangnya hingga 255 karakter).

Ini sering keliru disebut sebagai penamaan UNC tetapi tidak meskipun itu terkait.

Awalan yang digunakan untuk memberi tahu API agar menggunakan jalur Unicode yang panjang adalah \\?\seperti pada:

\\?\D:\very long path

Nama UNC biasanya digunakan ketika mengacu pada jalur pada server remote dalam bentuk \\servername\path name\file name. Anda dapat menggabungkan ini dengan awalan jalur panjang sehingga:\\?\UNC\server\share

Perhatikan bahwa beberapa aplikasi yang ditulis dengan buruk tetapi sayangnya cukup umum, tidak mendukung jalur file UNC atau awalan jalur panjang.

Referensi: https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247(v=vs.85).aspx#maxpath

Dukungan jalur panjang

Ini adalah opsi yang telah ditambahkan ke versi terbaru dari Windows 10. Ini, pada saat penulisan, tidak diaktifkan secara default karena memerlukan dukungan aplikasi spesifik. Menariknya, PowerShell memiliki dukungan bawaan sehingga mengaktifkan opsi ini akan memungkinkan jalur panjang untuk digunakan secara langsung dalam skrip PowerShell.

Anda dapat mengaktifkannya melalui editor Kebijakan Grup jika Anda memiliki versi Windows dengan itu. Atau Anda cukup menggunakan perubahan Registry berikut. Seperti biasa, harap buat cadangan bagian registri yang Anda ubah sebelum melakukan sesuatu.

  1. Lari regedit.exe.
  2. Konfirmasikan permintaan UAC.
  3. Navigasikan ke tombol: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{48981759-12F2-42A6-A048-028B3973495F}Machine\System\CurrentControlSet\Policies
  4. Buat atau ubah kunci LongPathsEnabled.
  5. Jika tidak ada, klik kanan pada Kebijakan dan pilih New> Dword (32-bit) Value dari menu.
  6. Setel LongPathsEnabledke 1untuk mengaktifkan.

Aplikasi apa pun dengan entri manifes yang sesuai sekarang akan memiliki akses ke jalur panjang standar POSIX. Ini harus mencakup aplikasi Windows Store.

Referensi: https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/

UPDATE 2017-04-09

@maoizm menunjukkan masalah dengan kunci registri di atas jadi saya melakukan beberapa penggalian lagi . Sepertinya Anda sekarang dapat mengatur dukungan nama file panjang dengan kunci sistem:

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

Ini masih hanya berfungsi untuk aplikasi yang secara khusus diatur untuk menggunakannya (memerlukan entri dalam manifest.xml aplikasi).

Anda juga harus mencatat bahwa Anda tidak dapat menggunakan nama jalur relatif dengan metode ini.

Julian Knight
sumber
{48981759-12F2-42A6-A048-028B3973495F}Machinebagian dari jalur registri akan berbeda di setiap komputer - mungkin tidak jelas bagi semua orang
maoizm
1
@ Maiizm - Poin yang bagus, terima kasih telah menyoroti itu. Silakan lihat pembaruan saya untuk alternatif jika menggunakan pembaruan Ulang Tahun W10 atau lebih baru.
Julian Knight
Saya menulis pustaka yang bernama FoundationIO, dan saya mencoba menjadikan jalur panjang sebagai default, apakah ada fungsi yang dapat saya panggil atau makro yang dapat saya atur untuk membuat dukungan jalur panjang secara otomatis diaktifkan untuk pengguna perpustakaan saya?
MarcusJ
Hai Marcus, apakah ini perpustakaan Windows asli? Jika demikian, .NET memiliki dukungan yang diperlukan sudah hadir sebagai bagian dari API Windows yang relevan - maaf karena saya tidak tahu detailnya karena saya bukan programmer .NET atau Win API, tetapi detailnya harus dapat dicari di MSDN.
Julian Knight
8

Saya suka solusi cmd. Meskipun saya ingin berbagi solusi lain yang bahkan berfungsi di Explorer saja: coba persingkat nama folder induk sebelum dihapus: nama yang lebih pendek akan mempersingkat jalur. Katakanlah, Anda memiliki struktur pohon folder ini:

C: \

.. Proyek

... .. Beberapa Proyek Luar Biasa selama musim semi 2014

.. .. .. Beberapa Kegiatan di taman di kota Jumat

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

.. .. .. .. .. File yang sebenarnya dengan nama panjang juga

Dalam hal ini Anda tidak dapat menghapus folder, Anda juga tidak dapat menghapus atau mengganti nama file. Jika Anda ingin menghapus seluruh struktur folder atau bagian dari itu, Anda dapat mengubah nama folder induk sementara dan mempersingkat jalur, dan kemudian menghapus folder. Nama-nama bisa berupa surat saja:

C: \

.. Proyek

.. .. x

... ... y

.. .. .. .. z

.. .. .. .. .. File yang sebenarnya dengan nama panjang juga

Dalam kasus saya, saya hanya ingin menghapus seluruh folder dengan banyak subfolder dan file. Jadi saya tidak peduli dengan nama folder.

Anatoly Mironov
sumber
1
Saya telah menulis alat kecil yang melakukan hal itu dan meletakkannya di GitHub. github.com/epsitec/Tools-RecursiveDelete
Pierre Arnaud
1
Semua perintah atau Shift + DEL tidak berfungsi untuk saya, tetapi ini berhasil.
larkee
Tidak benar-benar berfungsi ketika Anda memiliki 10 k folder bersarang
Julian Knight
juga tidak berfungsi jika salah satu folder memiliki nama yang sangat panjang (Anda tidak dapat mengganti nama folder yang menyinggung).
aucuparia
7

Solusi 7-zip bekerja sangat baik. Opsi lain jika Anda menginstal git adalah membuka bash shell dan menggunakan:

rm -f

(atau rm -rfuntuk folder)

Pengguna
sumber
1
Untuk yang belum tahu tolong jelaskan bagaimana Anda "membuka bash shell" di Windows?
OMY
1
@YOM Anda perlu menginstal git. Kemudian dari menu mulai Anda dapat membuka git bash atau jika Anda memilih untuk memiliki ekstensi shell ketika Anda menginstal git maka Anda dapat mengklik kanan di atau pada folder dan pilihGit Bash Here
Pengguna
4

Saya menyarankan Total Commander (shareware, tetapi tetap bekerja setelah masa uji coba dengan hanya layar awal cerewet minimal). Itulah cara saya menyelesaikan masalah nama file yang terlalu panjang .

Sopalajo de Arrierez
sumber
1
Terima kasih Tuhan saya menemukan ini. Mengalami masalah saat menghapus folder node_modules karena ia memutuskan untuk dengan bodohnya mengumpulkan direktori.
Alias
@Alias, Total Commander membuat masalah itu lebih mudah dideteksi, setidaknya untuk saya. Setelah mengidentifikasi masalah seperti itu, chkdskharus menyelesaikannya.
Sopalajo de Arrierez
Versi 7.0 tidak berfungsi, ini menunjukkan pesan kesalahan dan menyarankan melakukan operasi sebagai Administrator, yang gagal juga.
izogfif
@izogfif: versi terbaru untuk hari ini adalah 8.52a. Saya akan mencoba yang ini. Anda tidak memberikan rincian tentang pesan kesalahan Anda, tetapi Anda bisa memiliki beberapa ketidakkonsistenan pada struktur arsip yang harus diselesaikan (setidaknya untuk NTFS) dengan "chkdsk c: / f" (dengan asumsi drive C :).
Sopalajo de Arrierez
2

Anda juga dapat menghapusnya menggunakan nama pendek yang setara. dir /xakan menunjukkan kepada mereka.

Ian Boyd
sumber
2

Saya membuat program java sederhana yang menggunakan robocopy untuk menghapus file. Guci adalah yang bisa dijalankan. Untuk output tambahan jalankan dari cmd line.

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

CamHart
sumber
2
Dan jika Anda tidak ingin menggunakan Java, Anda dapat menggunakan alat ini yang saya tulis menggunakan .NET ( github.com/epsitec/Tools-RecursiveDelete ).
Pierre Arnaud
@PierreArnaud utilitas yang bagus. Saya membutuhkan sesuatu seperti ini untuk otomasi baris perintah. @ CamHart kerja bagus dari kamu juga! Terima kasih kawan!
amitthk
1

Saya sudah mencoba semua jawaban lain, tetapi mereka tidak berhasil (minimal bagi saya).

Saya menemukan delinfile dan bekerja dengan sangat baik dan cukup cepat!

Uji coba terbatas hingga 3 tindakan / 15 Hari tetapi dapat digunakan jika Anda hanya ingin menghapus beberapa folder / file:

Jürgen Paul
sumber
1

Direktori yang lebih besar dirancang untuk tugas ini juga. masukkan deskripsi gambar di sini

  • Unduh
  • Menggunakan panggilan rekursif dengan RemoveDirectoryW untuk menghapus direktori yang ada
  • Menggunakan repositori file sendiri untuk direktori yang baru dibuat
  • File dapat dipindahkan dari direktori sebelum penghapusan direktori yang bersaing.
  • Cepat, meskipun menavigasi ke atas direktori adalah klik per direktori bersarang
  • Windows XP (SP3) dan lebih tinggi
  • Kode tidak dikelola yang tidak ditandai tanpa penginstal, jadi mungkin peringatan Smartscreen saat dijalankan dari folder cadangan mis. Desktop.

Info lebih lanjut di CodeProject .

Laurie Stearn
sumber
Silakan baca Bagaimana saya merekomendasikan perangkat lunak untuk beberapa tips tentang bagaimana Anda harus merekomendasikan perangkat lunak. Anda harus memberikan setidaknya tautan, beberapa informasi tambahan tentang perangkat lunak itu sendiri, dan bagaimana hal itu dapat digunakan untuk menyelesaikan masalah dalam pertanyaan.
DavidPostill
@ David: Lebih baik? Tautan sangat bermanfaat, terima kasih.
Laurie Stearn
1

Saya menghadapi masalah ini di Windows 10 dan menemukan solusi mudah ini.

  1. Masuk ke sedikit lebih dalam dari pohon folder Anda.
  2. Seret dan letakkan folder dari suatu tempat di tengah-tengah pohon ke suatu tempat mulai dari pohon menggunakan bilah alamat.
  3. Seperti pada gambar saya seret dan letakkan kotak merah ke kotak hijau. (dalam hal ini jalur lebih pendek, tetapi untuk jalur panjang juga berfungsi)
  4. Kemudian jalur Anda menjadi lebih pendek dan hapus seperti biasa menggunakan tombol hapus.

masukkan deskripsi gambar di sini

Nayana Adassuriya
sumber
1

Mendapat jawaban sempurna di sini (untuk file). Bekerja di 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

Lihat juga: https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath

Tidak ada satu pun jawaban alternatif dalam 4 pertanyaan yang cukup untuk kebutuhan saya. Anda disambut dunia.

Andrew
sumber
0

Saya akhirnya menemukan cara melakukan ini melalui Powershell. Berikut adalah petunjuk yang saya ikuti untuk menjalankan ini pada Windows 7:

  1. Buat folder baru bernama NTFSSecurity di folder C: \ Users \ XXXX \ Documents \ WindowsPowerShell \ Modules \ NTFSSecurity , di mana XXXX adalah nama pengguna Windows Anda. Contoh: jika nama pengguna saya adalah " aspnyc ", folder baru akan menjadi C: \ Users \ aspnyc \ Documents \ WindowsPowerShell \ Modules \ NTFSSecurity .

  2. Unduh paket Modul Sistem Keamanan PowerShell Modul - harus tersedia sebagai file ZIP sederhana.

  3. Buka konsol Powershell, jalankan Get-Module -ListAvailable dan pastikan NTFSSecurity muncul di suatu tempat dalam daftar modul terdaftar.
  4. Di konsol Powershell, jalankan Import-Module NTFSSecurity .
  5. Di konsol Powershell, jalankan Hapus-Item2 "YYYY" -Recurse , di mana YYYY adalah jalur Windows ke folder yang ingin Anda hapus secara rekursif (misalnya C: \ Potatoes \ Badgers \ FolderToDelete ).
Mass Dot Net
sumber
0

Saya akhirnya menemukan cara melakukan ini dengan Powershell pada Windows 10 di mana nama file individu terlalu panjang. Berikut adalah langkah-langkah yang saya ikuti untuk menjalankan ini pada Windows 10:

  1. Unduh paket Modul Sistem Keamanan PowerShell Modul - harus tersedia sebagai file ZIP sederhana.
  2. Ekstrak file Zip sebagai folder NTFSSecurity di direktori C: \ WINDOWS \ system32 \ WindowsPowerShell \ v1.0 \ Modul.
  3. Buka konsol Powershell dengan elevasi administratif (alias Mode Admin) dan jalankan Get-Module -ListAvailable dan pastikan NTFSSecurity muncul di suatu tempat dalam daftar modul terdaftar.
  4. Jalankan Set-ExecutionPolicy Tidak Terbatas untuk mem-bypass mode eksekusi yang ditandatangani. Anda harus mengkonfirmasi tindakan ini dengan Y (es)
  5. Akhirnya cd ke folder yang ingin Anda hapus.
  6. Di konsol Powershell, jalankan Import-Module NTFSSecurity .
  7. Di konsol Powershell, jalankan Hapus-Item2 "YYYY" -Recurse , di mana YYYY adalah jalur Windows relatif atau absolut ke folder yang ingin Anda hapus secara rekursif (misalnya C: \ Potatoes \ Badgers \ FolderToDelete ).
  8. Periksa apakah itu berhasil.
  9. Akhirnya diatur kembali ke mode eksekusi yang ditandatangani dengan Set-ExecutionPolicy Restricted . Anda harus mengkonfirmasi tindakan ini dengan Y (es).
Epicurist
sumber
0

Jika Anda menginstal Bash di Ubuntu pada Windows, Anda dapat melakukan cd ke direktori induk dalam prompt perintah biasa dan kemudian ketik:

bash -c "rm -rf dirname_here"

Yang meluncurkan bash, secara rekursif menghapus direktori dari linux di mana tidak ada batasan nama file, dan kemudian keluar kembali ke command prompt reguler Anda.

Richard Szalay
sumber