Bagaimana cara menghapus file di Windows dengan nama file yang terlalu panjang? [duplikat]

202

Pertanyaan ini sudah ada jawabannya di sini:

Istri saya memiliki beberapa file dan folder yang entah bagaimana berakhir dengan nama file yang menyebabkannya tidak dapat dihapus (tidak dapat dihapus) dengan cara biasa atau melalui baris perintah. Saya percaya nama file terlalu panjang karena kedalaman struktur folder. Adakah yang tahu utilitas yang bagus untuk membersihkan file seperti ini?

pengguna3048
sumber
Bagaimana file-file ini dibuat?
Nick
Maaf atas ketidaktahuan saya tentang topik ini, tetapi bukankah seharusnya Windows menangani file-file ini? Bukankah seharusnya apa yang diposting oleh Eddins akan dilakukan secara otomatis oleh Windows (bahkan dari penjelajah)?
Stefanos Kalantzis
2
@ Mokubai- Pertanyaan duplikat harus ditandai duplikat dari pertanyaan ini , karena pertanyaan ini lebih lama .
AStopher
1
@cybermonkey: Dan ini memiliki jawaban yang lebih baik.
Ellesedil
Untuk pembaca lebih lanjut, Metode 7zip dengan CTRL+DELETE adalah metode termudah menurut saya ...
Christian Gollhardt

Jawaban:

426

Ketika Anda ingin sepenuhnya menghapus direktori dan berisi jalan yang panjang, robocopylakukan pekerjaan yang SANGAT bagus:

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete

Ini berfungsi karena robocopy secara internal menggunakan versi Unicode-aware fungsi Win32, dengan \\?\awalan untuk path file ; fungsi-fungsi tersebut memiliki batas 2¹⁶-1 (32.767) karakter, bukan 259.

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

Benoit
sumber
1
Efisien ketika tidak ada nama pendek (8.3) yang disimpan di sistem file.
Antoine RODRIGUEZ
1
Ini bekerja dengan baik dengan file cache Windows Store saya yang keras kepala yang menolak untuk dihapus. Terima kasih!
Samir
1
Saya harus menambahkan / membersihkan jalur robocopy agar ini berhasil, tetapi ternyata berhasil setelah itu
actionshrimp
3
Robocopy adalah apa yang membuat saya terlibat dalam kekacauan ini, tetapi tidak pernah terpikir oleh saya untuk menggunakan Robocopy untuk mengeluarkan saya dari situ. Jawaban bagus! Terima kasih!
Jay Michaud
2
@SarahofGaia, salahku, ini 2¹⁶ - 1 sebenarnya
Benoit
91

Dari prompt perintah:

dir /X

Ini akan mencantumkan file / folder Anda dalam format nama pendek. Kemudian gunakan nama pendek persis seperti yang tertulis untuk menghapus file:

del LONGF~1.txt
Will Eddins
sumber
1
Saya suka yang itu, itu sedikit pemikiran lateral yang bagus.
Kolom
Meskipun saya tidak dapat menjamin itu akan berfungsi dalam kasus ini, saya telah menggunakannya beberapa kali untuk menghapus folder yang memiliki karakter tidak valid pada akhirnya yang membuatnya tidak mungkin untuk dihapus dengan cara biasa.
Will Eddins
1
Ini bekerja untuk file dan folder dalam direktori saat ini, tetapi jika Anda entah bagaimana berhasil menemukan diri Anda dalam sebuah folder yang jalan terlalu panjang, hal itu tidak akan membantu. Sebagai contoh, saya saat ini berada di konsol di jalan yang terlalu panjang dan tidak bisa diratau cd ...
Bobson
1
@ Bobson Jika Anda tidak bisa dirmenggunakannya pushd. Itu berhasil bagi saya.
BadHorsie
4
Ini tidak bekerja dengan Windows 10, nama file yang ditampilkan adalah yang panjang
Loenix
53

Saya progresivley bekerja dengan cara saya ke jalan, mengganti nama setiap folder orangtua berturut-turut menjadi "1" dan mencoba untuk menghapus. Anda secara efektif memperpendek jalur setiap kali dan saya tidak pernah harus bekerja dengan lebih dari 4 atau 5 direktori sampai saya akhirnya dapat menghapus seluruh struktur direktori (yang mungkin atau mungkin tidak seperti yang Anda inginkan). Anda dapat melakukan ini dari folder anak terakhir juga dan bekerja dengan cara naik atau turun.

joeqwerty
sumber
7
Ini adalah satu-satunya hal yang berhasil untuk saya. Semua trik lain yang diberikan di sini dan di forum lain seperti ini tidak berhasil.
Andrew Arnott
Adalah satu-satunya saran yang bekerja cukup aneh.
Nestor Ledon
Ini bekerja untuk saya, jalan pintas yang membantu saya adalah mv * 1 && cd 1. Ini tidak berfungsi ketika banyak file berada di direktori tetapi pada saat itu rm -rf *biasanya berhasil.
Alexander Varwijk
1
Tidak dapat melakukan ini di windows 10 ... ganti nama throws "filename to long 'error
Dawesi
3
Ini tidak hanya memperbaiki masalah bagi saya, tetapi juga menjelaskan bagaimana saya berakhir dengan masalah ini. Saya pasti memiliki jalur yang dekat dengan batas, kemudian saya mengganti nama folder induk (menambahkan sesuatu seperti "backup Nov 2016 save" ke nama) yang mendorong file dalam subfolder melebihi batas. Baik untuk mengetahui penyebabnya dan juga solusinya, meskipun saya tahu itu bisa terjadi dengan cara lain juga, saya pikir ini adalah cara yang umum terjadi pada orang-orang.
eselk
13

Di beberapa program, termasuk Command Prompt ( cmd.exe), Anda dapat menyiasati batas panjang file dengan mengawali path lengkap dengan \\.\seperti ini:

\\. \ C: \ beberapa direktori \ direktori lain \ file dengan nama panjang
grawity
sumber
3
tidak berfungsi di windows 10
Dawesi
terima kasih, cmd bekerja dengan pesona ini di Win7rm -rf \\directoryname
Philip Pryde
13

Trik yang saya gunakan untuk menyelesaikan batasan panjang "path lengkap dan nama file" untuk memindahkan, menyalin, atau menghapus sesuatu adalah dengan mempersingkatnya dengan 'membobol' setengah jalan ke bawah (atau lebih) menggunakan huruf drive yang dipetakan yang menunjuk ke folder. menuruni jalan setapak .

jadi Anda memiliki c: \ some \ long \ path ... \ dan \ foo \ bar \ folder \ oldfiles \ myoldfile.txt.

Kemudian memetakan huruf drive sewenang-wenang ke suatu tempat di sepanjang jalan sehingga potongan pertama jalur menjadi hanya beberapa karakter. Prasyarat - folder harus berada dalam folder bersama (yang mungkin sudah ada di server, yang mana saya harus lakukan ini), dan jika belum maka pilih folder di suatu tempat di jalan dan bagikan. Bergantung pada tingkat lingkungan dan paranoia Anda, izinkan semua orang memodifikasi akses ke share selama izin NTFS terbatas. Jika Anda mau, cukup izinkan modifikasi hak hanya ke akun Anda sendiri.

Sekarang buka folder bersama atau satu di dalamnya dan bagikan, atau gunakan baris perintah sebagai berikut. Anggap Anda membagikan folder "foo" sebagai "fooshare", maka Anda bisa melakukannya

net use x: \\mycomputername\fooshare\bar\folders /persistent:no

dan drive X: sekarang menunjuk langsung ke folder "folder" di dalam share itu, jadi "x: \ oldfiles \ myoldfile.txt" sekarang cukup singkat.

("/ Persistent: no" berarti ini tidak akan selamat dari reboot berikutnya dan membingungkan Anda nanti. Jangan lupa untuk tidak membagikan folder Anda setelah selesai.)

Ingat, Anda tidak harus membagikan folder yang berisi file tersebut, jika sudah ada di dalam folder bersama, Anda bisa memetakan melalui share dan folder bersarang ke folder target di dekat file dan itu berfungsi dengan baik.

Saya harus menggunakan teknik ini melakukan robocopy besar antara dua server ketika kami menyadari bahwa pengguna telah memetakan drive cukup dalam di dalam struktur folder, sehingga mereka dapat menggunakan 255 karakter dari sana, tetapi itu melebihi total panjang jalur file ketika diakses dari root drive lokal.

AdamV
sumber
4
Anda dapat menghindari berbagi dengan menggunakan subst x: C:\Some\first\part\of\the\long\pathdan setelah itu menghapus drive dengansubst x: /d
mihi
1
Usaha yang bagus tetapi ketika Anda memiliki 10 k folder bersarang itu tidak mungkin.
Julian Knight
The substtrick tampaknya bekerja dengan baik, asalkan nama file tidak begitu lama untuk membuatnya pergi lebih dari 260 karakter bahkan pada akar drive.
Stephen Chung
Anda juga tidak perlu membagikan folder apa pun secara eksplisit net use, Anda dapat menggunakan share admin default:net use x: \\localhost\c$\bar\folders /persistent:no
kapex
9

Cara paling sederhana yang saya temukan adalah melakukan booting dari live CD ubuntu.

Sebagai alternatif, Anda dapat membuat folder bersama di tengah jalan dan kemudian memetakan drive jaringan untuk itu dan melakukan penghapusan dari folder yang dipetakan (bahkan pada mesin yang sama)

Kol
sumber
17
Lucu juga seberapa sering CD Live Ubuntu akan membantu mengatasi masalah Windows ^^
Ivo Flipse
1
Saya telah memperhatikan bahwa saya sendiri, jaringan yang cerdik mencoba live CD, masalah filesystem mencoba live CD, tabel partisi yang rusak dll. :-)
Kol.
Ini adalah satu-satunya solusi yang berhasil untuk saya. Aku cinta kamu, Linux! <3
David Frye
1
Jalankan bash dari windows Tidak diperlukan Linux. ;-) Juga jika Anda menjalankan windows 10 cukup instal "Windows Subsystem untuk Linux" pada dasarnya windows menggunakan kait api ubuntu untuk menyelesaikan pekerjaan ... utils termasuk "apt, ssh, rsync, find, grep, awk, sed, sortir, xargs, md5sum, gpg, curl, wget, apache, mysql, python, perl, ruby, php, gcc, tar, vim, emacs, diff, patch, dan sebagian besar dari puluhan ribu paket biner di arsip Ubuntu! "ini adalah lingkungan pengembangan Linux sangat penuh yang kebetulan menjadi berjalan pada Windows. zdnet.com/article/ubuntu-and-bash-arrive-on-windows-10
Dawesi
cygwin adalah alternatif lain untuk menjalankan perintah LINUX di windows
atom88
5

Ganti nama direktori cut / paste file di tempat lain, lalu hapus. Bekerja disini.

Atau hanya dari command prompt, jika Anda tidak ingin melalui masalah.

Benteng
sumber
Ini bekerja seperti pesona. Gali di sana (bagi saya, itu node_modulesfolder super-bersarang ), seret keluar ke desktop Anda dan hapus. Bilas dan ulangi saat Anda membuka beberapa folder sekaligus. Benar-benar masalah yang menjengkelkan.
julukan
7
Ini tidak berhasil untuk saya - operasi pasta gagal karena nama file yang panjang - tidak masalah di mana memotongnya.
UpTheCreek
1

Mungkin bukan cara terbaik dan saya tertarik untuk melihat apa yang orang lain buat -

Saya pernah memiliki ini dan saya mencoba beberapa hal tanpa hasil. Daripada mencari alat yang bagus, saya memulai kembali dengan Disk Windows, pergi ke konsol pemulihan dan hanya menghapusnya dari sana. Bekerja pertama kali dan sangat baik!

Juga, lakukan Google untuk Anda dan temukan ini - DelinvFile Terlihat Bagus tetapi tidak dapat menjaminnya.

Sunting - Peringatan, baru saja melihat di atas hanya percobaan - Mungkin tidak sebagus yang saya pikirkan!

William Hilsum
sumber
Rimraf gratis bekerja dengan baik dan berfungsi ketika semua ide lain gagal. Ini membutuhkan node.js
Julian Knight