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-Item
di 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?
sumber
Ubuntu
atau yang lainLinux Bootable CD
kita bisa boot komputer kita keUbuntu
atau OS lain untuk sementara. maka kita dapat memilih folder dan kita dapat menghapusnya dengan mudah.Jawaban:
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).
sumber
shift + Del
seperti kata @cori. Jika Anda memilihDelete
opsi dari menu konteks, itu AKAN gagal di sana.shift + Del
saya t!Tidak ada jawaban lain (gratis) di sini yang berfungsi untuk saya, tetapi saya menemukan satu di situs lain:
rimraf adalah paket Node.js , jadi Anda harus menginstal Node.js yang mencakup npm . Maka Anda dapat menjalankan:
Kemudian Anda bisa lari
rimraf
dari baris perintah.Saya menemukan solusi ini karena npm sendiri yang menyebabkan masalah ini karena cara itu bersarang dependensi.
Omong-omong,
rimraf
dapatkan namanya dari perintah UNIXrm -rf
, yang secara rekursif menghapus file dan folder.sumber
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
robocopy
untuk menyalin + diperbaruiSetelah dieksekusi
robocopy
, direktori target juga akan kosong.Instruksi ini untuk baris perintah. Cukup buka pencarian di Windows, ketik
cmd
dan tekan Enter.Katakanlah target untuk dihapus adalah:
Kami melanjutkan sebagai berikut:
Pertama buat direktori kosong, fi
C:\emptyfolder
.Salin + perbarui dari direktori kosong ke target, menggunakan opsi
/purge
Hapus direktori kosong. Anda tidak membutuhkannya lagi.
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
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:
sumber
Saya yakin saya telah menemukan cara untuk menghapus sesuatu
cmd
. Awalnya saya mencobadel
perintah itu, tetapi itu tidak berhasil. Lalu aku ingatrmdir
. Melakukan hal berikut:sepertinya sudah bekerja.
sumber
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 .
FastCopy portable (tidak perlu instalasi), dan ada versi 32 bit dan 64 bit yang tersedia.
sumber
Tanpa menginstal perangkat lunak tambahan, Anda dapat menggunakan
subst
perintah 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 deleted
Anda dapat menggunakan perintahdan kemudian Anda dapat menghapus
X:\folder to be deleted
di Windows Explorer atau di command prompt dengan mudah. Untuk menghapus huruf drive sementara alias gunakan perintahsumber
Cygwin
rm -rf
bekerja dengan baik di jalur panjang!sumber
Cukup turun dari Powershell ke perintah dengan menjalankan di bawah:
sumber
Solusi Dentrasi adalah yang paling berhasil bagi saya, tetapi saya ingin memposting langkah-langkah spesifik dalam jawaban tingkat atas.
sumber
Ada dua hal yang belum disebutkan dalam jawaban yang ada.
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: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.
regedit.exe
.HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{48981759-12F2-42A6-A048-028B3973495F}Machine\System\CurrentControlSet\Policies
LongPathsEnabled
.LongPathsEnabled
ke1
untuk 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:
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.
sumber
{48981759-12F2-42A6-A048-028B3973495F}Machine
bagian dari jalur registri akan berbeda di setiap komputer - mungkin tidak jelas bagi semua orangSaya 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.
sumber
Solusi 7-zip bekerja sangat baik. Opsi lain jika Anda menginstal git adalah membuka bash shell dan menggunakan:
rm -f
(atau
rm -rf
untuk folder)sumber
Git Bash Here
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 .
sumber
chkdsk
harus menyelesaikannya.Anda juga dapat menghapusnya menggunakan nama pendek yang setara.
dir /x
akan menunjukkan kepada mereka.sumber
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
sumber
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:
sumber
Direktori yang lebih besar dirancang untuk tugas ini juga.
Info lebih lanjut di CodeProject .
sumber
Saya menghadapi masalah ini di Windows 10 dan menemukan solusi mudah ini.
sumber
Mendapat jawaban sempurna di sini (untuk file). Bekerja di Windows 10.
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.
sumber
Saya akhirnya menemukan cara melakukan ini melalui Powershell. Berikut adalah petunjuk yang saya ikuti untuk menjalankan ini pada Windows 7:
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 .
Unduh paket Modul Sistem Keamanan PowerShell Modul - harus tersedia sebagai file ZIP sederhana.
sumber
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:
sumber
Jika Anda menginstal Bash di Ubuntu pada Windows, Anda dapat melakukan cd ke direktori induk dalam prompt perintah biasa dan kemudian ketik:
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.
sumber
Arahkan ke direktori di WinRAR, pilih file, tekan F2, ganti nama file ke nama yang lebih pendek. Maka Anda dapat menghapus file seperti biasa.
Sumber: https://www.youtube.com/watch?v=qQTyTprFAOg
sumber