Eclipse membuat folder temp di salah satu direktori yang bersarang cukup dalam, misalnya
dir1\dir1\dir1\dir1\...
Saya tidak dapat menghapus folder ini di Windows melalui Explorer, del
atau rmdir
perintah, atau perintah Cygwin 'rm'. Bagaimana saya harus menghapus folder yang sangat panjang ini?
Itu hanya terus mengatakan "Nama file terlalu panjang ..."
Jawaban:
Jika Anda seperti saya dan tidak ingin menginstal perangkat lunak tambahan untuk memperbaiki masalah seperti ini, saya akan pergi dengan saran XQYZ dan gunakan
robocopy
untuk menyelesaikan masalah. (Dalam kasus saya, masalah pertama kali diciptakan oleh robocopy, dengan menyalin direktori yang memiliki titik persimpangan rekursif di dalamnya tanpa memasok / XJ ke robocopy).Untuk menghapus pohon direktori mulai dari c: \ subdir \ lebih \ offending_dir :
Total langkah demi langkah prosesnya sesederhana ini:
cd c:\subdir\more
untuk cd ke direktori induknya.mkdir empty
untuk membuat direktori kosong.robocopy empty offending_dir /mir
untuk mencerminkan direktori kosong ke direktori yang menyinggung.rmdir offending_dir
untuk menyingkirkan direktori menyinggung yang sekarang kosong danrmdir empty
untuk menyingkirkan direktori kosong perantara Anda.sumber
robocopy
dan titik persimpangan; terima kasih telah menunjukkan kepadaku cara menggunakannya untuk membersihkan kekacauan!Ini sebenarnya cukup mudah untuk diperbaiki. Katakan bahwa struktur direktori adalah seperti itu:
Untuk memperbaikinya, cukup ganti nama setiap folder menjadi nama folder satu karakter hingga tidak lagi terlalu lama untuk dihapus:
C:\Dir1
menjadiC:\D
C:\D\
C:\D\Dir1
menjadiC:\D\D
C:\D\D\
Berikut adalah file batch untuk mengotomatiskan proses (versi sederhana ini terbaik untuk direktori sederhana seperti yang dijelaskan dalam pertanyaan, terutama untuk yang sekali pakai). Berikan folder tertinggi yang mungkin (misalnya
C:\Dir1
untukC:\Dir1\Dir1\Dir1…
atauC:\Users\Bob\Desktop\New Folder
untukC:\Users\Bob\Desktop\New Folder\abcdefghi…
)Penjelasan Teknis
Solusi yang diusulkan lainnya mundur; Anda tidak dapat memperbaikinya dengan bekerja dengan cara Anda dari direktori paling dalam ke luar, Anda harus pergi ke arah lain.
Ketika Anda mencoba mengakses direktori, Anda melakukannya menggunakan jalur absolutnya apakah secara eksplisit atau tidak, yang mencakup semua yang datang sebelumnya. Oleh karena itu, untuk struktur direktori seperti
C:\Dir1\Dir1\Dir1\Dir1
, panjang jalur ke terdalamDir1
adalah 22. Namun panjang jalur ke terluarDir1
hanya 7, dan karena itu masih dapat diakses terlepas dari isinya (dalam konteks jalur direktori tertentu yang diberikan , sistem file tidak memiliki pengetahuan tentang apa yang dikandungnya atau efeknya terhadap total panjang path direktori anak-anaknya; hanya direktori leluhurnya - Anda tidak dapat mengganti nama direktori jika total panjang path terlalu panjang).Oleh karena itu, ketika Anda menemukan jalan yang terlalu panjang, apa yang perlu Anda lakukan adalah pergi ke tingkat tertinggi yang mungkin dan ganti namanya menjadi nama satu karakter dan ulangi untuk setiap tingkat di dalamnya. Setiap kali Anda melakukannya, total panjang jalan lebih pendek dengan perbedaan antara nama lama dan nama baru.
Yang sebaliknya juga benar. Anda tidak dapat membuat jalur yang lebih besar dari panjang maksimum yang didukung (pada DOS dan Windows,
MAX_PATH = 260
). Namun, Anda dapat mengubah nama direktori, mulai dari yang paling dalam, menjadi nama yang lebih panjang. Hasilnya adalah folder yang lebih dalam yang jalur absolutnya> 260 tidak dapat diakses. (Itu tidak membuat mereka “tersembunyi” atau aman, karena mereka cukup sederhana untuk mendapatkannya, jadi jangan gunakan metode ini untuk menyembunyikan file.)Catatan Sisi Menarik
Jika Anda membuat folder di Windows 7 Explorer, sepertinya Explorer memungkinkan Anda membuat subdirektori sedemikian rupa sehingga total panjangnya lebih panjang daripada
MAX_PATH
, dan sebenarnya itu adalah penjelmaan, namun sebenarnya curang dengan menggunakan "nama file DOS 8.3". Anda dapat melihat ini dengan membuat pohon seperti berikut:Panjangnya 696 karakter, yang tentu saja jauh lebih panjang dari 260. Selanjutnya, jika Anda menavigasi ke subdirektori terdalam di Explorer, itu menunjukkannya seperti yang diharapkan di bilah alamat ketika tidak dalam fokus, tetapi ketika Anda mengklik alamat bar, itu mengubah jalur ke
C:\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\
, yang hanya 102 karakter.Di XP, ia tidak melakukan ini, sebaliknya ia menolak untuk membuat jalan yang lebih panjang daripada yang didukung.
Apa yang benar-benar menarik adalah untuk mengetahui bagaimana Windows 7 Explorer menangani "path terlalu panjang" ketika
NtfsDisable8dot3NameCreation
opsi diatur.sumber
\\?` doesn't work with
rmdir`.\\?\C:\dir\dir\dir\dir
secara harfiah memotong MAX_PATH; tidak ada "variabel" yang terlibat. (Tapi seperti yang saya katakan, itu tidak bekerja denganrmdir
ataucmd.exe
builtin lain karena beberapa alasan.)md C:\01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
Ini tidak akan berfungsi karena sistem file memiliki informasi yang cukup untuk menentukan bahwa panjang jalur total akan menjadi 263 karakter, sehingga gagal.Anda dapat mempersingkat jalur dengan menggunakan
subst
untuk membuat drive virtual:Ubah ke drive virtual:
Sekarang Anda dapat menghapus file:
Hapus drive virtual:
Hapus direktori:
sumber
C:\TEMP\dir1\dir1\dir1
, maka itu akan mempersingkat bagiannya, sehingga memungkinkan Anda untuk masuk. Ini sama seperti saran Anda untuk mengganti nama, tetapi dengan pemetaan sebagai gantinya. ;):-)
Saya menulis aplikasi C # kecil untuk membantu saya menghapus struktur yang sangat dalam serupa yang dihasilkan oleh penggunaan Robocopy yang ceroboh dan cadangan dari Homeserver; secara default Robocopy memperlakukan poin bersama sebagai folder biasa ... :-( Anda mungkin berakhir dengan kekacauan besar tanpa menyadarinya.
Alat ini tersedia di CodePlex dengan file sumber, untuk digunakan siapa saja.
sumber
Beberapa waktu yang lalu saya membuat sebuah utilitas kecil yang dapat dieksekusi yang disebut DeleteFiles yang dapat Anda gunakan untuk melakukan tugas ini dengan mudah.
Menggunakan utilitas mandiri ini yang bisa Anda lakukan:
untuk menghapus seluruh struktur folder. -r mengulang hierarki folder dari direktori awal ke bawah, -f menghapus folder yang kosong (yang akan menjadi semuanya jika Anda menggunakan . sebagai filespec). DeleteFiles mendukung jalur yang lebih panjang dari batas Windows MAX_PATH sehingga akan berfungsi dengan baik pada folder yang sangat bersarang.
DeleteFiles gratis dan open source dan Anda dapat mengambil kode biner atau sumber dari GitHub atau menginstal langsung menggunakan Chocolatey
sumber
> NUL
sampai akhir dapat membuat proses lebih cepat.Sederhana & Mudah Sekarang
saya menghadapi masalah yang sama sejak lama dengan node_modules yang sangat bersarang folder. jadi akhirnya dibuat skrip untuk memperbaiki apa yang bisa menghapus folder dengan memperpendek jalur.
https://github.com/dev-mraj/fdel
sumber
Saat bekerja dengan Sikuli, saya didongkrak dengan loop rekursi Calculator.sikuli dalam program yang membuat jumlah "kalkulator.sikuli.kalator.sikuli" yang tak terhitung jumlahnya. Saya bisa memindahkan pohon, tetapi pathname terlalu lama untuk dihapus.
Setelah mencoba beberapa solusi dengan popd loop, Scandisk dan mendapatkan (jelas) di mana saja ....
Saya menulis skrip ini untuk 'masuk lebih dalam' ke direktori yang berulang (dalam direktori yang disebut 'a'), memindahkannya (ke direktori yang disebut 'b'), kemudian menghapus pohon yang terpotong, memindahkannya kembali (ke 'a') , dan ulangi:
Remdirs.bat
Ini hanya panggilan untuk menjalankan file batch lagi.
sumber
Kami memiliki masalah seperti ini di tempat kerja ketika gerhana memutuskan untuk membuat sampah di harddisk. Kami memperbaikinya dengan menggunakan fungsi robocopy / MIR untuk mencerminkan direktori kosong ke direktori bersarang.
sumber
Saya akan mencoba membuka command prompt dan menjalankan:
Jika itu tidak berhasil, saya akan melakukan cd setengah jalan ke pohon direktori dan mencoba untuk menghapus bagian dari direktori - katakanlah 20 direktori terdalam - dan kemudian bekerja dengan cara saya keluar dari sana.
sumber
;-)
Jika itu adalah folder jaringan maka cukup bagikan direktori induk direktori itu dan petakan ke drive di mesin lokal Anda dan kemudian hapus folder Anda.
sumber
Buka prompt perintah.
Arahkan ke folder / direktori yang berisi 'dir1' tertinggi (kami akan menganggap C: \)
Edit (setelah komentar ditambahkan) :
Ide lain:
MS menawarkan info tentang cara mengatasi masalah (banyak ide untuk dicoba) di sini .
Ada juga alat ini (tidak pernah menggunakannya secara pribadi) - TooLongPath .
Mungkin menulis sesuatu (karena Anda memiliki Eclipse) yang menavigasi sepanjang jalan dan kemudian mundur satu tingkat folder sekaligus, menghapus saat berjalan?
sumber
Solusi lain: masuk unduh Total Commander. Ini adalah program yang sangat berguna, bukan hanya karena itu nama file yang panjang.
Versi tidak terdaftar adalah nagware tetapi berfungsi penuh, itu akan melakukan pekerjaan.
sumber
Ini dapat dilakukan langsung dari baris perintah atau dalam file batch dengan membangun jalur UNC ke direktori yang ingin Anda hapus
jadi alih-alih
menggunakan
Jalur gaya UNC seperti ini bisa lebih lama dan melewati batas 260-char.
sumber
The path \\?\C:\temp\wqiyretiuqyertiuyqwteiyrutqwuiyertiqrqweirqyert\wqteriuwqyetriuqwteiryutwiuertiuyqerieerrt\IOQWUE~1\QIWUYE~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\ OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1 is too long.
Windows 7 64-bit.Ketika saya memiliki masalah ini, saya cukup mengganti nama beberapa nama folder menjadi lebih pendek, kemudian setelah total path cukup pendek, itu akan menghapus OK. Tidak perlu alat tambahan.
sumber
ren
perintahnya akan gagalpath too long
.Saya memiliki masalah yang sama, kecuali itu diciptakan oleh tugas Cobian Backup rekursif. Saya ternyata perangkat lunak Cobian gratis termasuk aplikasi Deleter yang dapat dengan mudah menghapus folder bersarang sial ini dengan sangat cepat.
Itu terletak di bawah menu alat.
sumber
Saya memang mengalami masalah yang sama dengan kekacauan folder direktori sedalam 5000+ yang dilakukan oleh beberapa aplikasi Java dan saya menulis sebuah program yang akan membantu Anda menghapus folder ini. Seluruh kode sumber ada di tautan ini:
https://gitlab.imanolbarba.net/imanol/DiREKT
Ini menghapus semuanya setelah beberapa saat, tetapi berhasil melakukan pekerjaan, saya harap itu membantu orang-orang yang (seperti saya), mengalami masalah yang sama membuat frustrasi
sumber
Sistem file Anda mungkin rusak. Jalankan chkdsk untuk melihat apakah ada perbaikan, lalu coba hapus folder.
sumber
MAX_PATH=255
). Ini dapat terjadi bahkan dengan sistem file yang tidak korup.