Hapus file yang mengandung karakter tidak valid di windows


16

Saya memiliki beberapa file yang berisi karakter titik dua dalam nama file (mis. 1d67c0d23e859ed4a259749e4a720d9e: default-sink). Ketika saya mencoba untuk menghapusnya dari baris perintah dengan perintah:

c:\backup> del /F *.*

Saya mendapatkan "Sistem tidak dapat menemukan file yang ditentukan." untuk setiap file. Jika saya menentukan satu file:

c:\backup> del /F "1d67c0d23e859ed4a259749e4a720d9e:default-sink"

Saya mendapatkan "Sintaks nama file, nama direktori, atau label volume salah." Jika saya mencoba menggunakan rd pada folder induk saya dapatkan

Bagaimana saya bisa menghapus file-file ini?


2
File-file ini dibuat pada partisi NTFS ketika saya boot ke Linux. Kira saya harus menggunakan boot disk Linux karena tampaknya windows tidak suka titik dua dalam nama file pada tingkat driver sistem file.
grom

Jawaban:


22

Ada artikel Microsoft KB yang mencantumkan cara yang mungkin untuk menghapus file tersebut di:

http://support.microsoft.com/kb/320081

Cara yang biasanya saya gunakan adalah metode API asli:

del "\\?\c:\path\1d67c0d23e859ed4a259749e4a720d9e:default-sink"

Berdasarkan:

http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx

Ini :adalah karakter khusus pada NTFS, metode API asli yang saya sebutkan di atas adalah cara yang disarankan untuk menghapus file-file tersebut.


4
Ini tidak berfungsi untuk titik dua, karena ditafsirkan sebagai aliran data bernama.
psusi

Ini berhasil untuk kasus saya. file Saya mengalami masalah dengan berisi koma,
Maher Fattouh

Terima kasih, ini berhasil untuk saya. File berakhir dalam suatu periode. CA848D8F.
Mastro

1
Tidak bekerja Nama file saya mengandung garis miring terbalik.
Pacerier

Jika nama file berisi :seperti yang ditanyakan OP, metode ini tidak berfungsi. Gunakan chkdskatau hapus dari live linux.
Sourav Ghosh

15

Saya kira Anda dapat mencoba nama 8.3?

del /F 1d67c0~1

Perhatikan bahwa pada drive NTFS Anda dapat secara eksplisit menonaktifkan fungsionalitas 8.3, jadi jika itu masalahnya Anda tidak beruntung untuk opsi ini. Untuk mendapatkan nama file dir adir /x

Dulu ada alat freeware yang disebut delinvfiletapi mereka sudah pergi dan berubah untuk shareware / dibayar


Bagaimana saya bisa melakukan ini pada volume NTFS yang dibuat dengan formatperintah dengan dukungan 8.3 nama dinonaktifkan?
user2284570

1
@ user2284570 metode ini tidak akan berfungsi. Ketika saya menulis jawaban itu, Microsoft memiliki 8,3 nama diaktifkan, tetapi hari ini dinonaktifkan secara default.
Mark Henderson

@ MarkHenderson, Nama file saya adalah 7:2. Bagaimana cara saya menggunakan nama 8,3 untuk nama file 7:2?
Pacerier

@Pacerier lihat komentar saya sebelumnya. Metode ini tidak akan bekerja pada sistem operasi modern. Windows XP atau lebih lama.
Mark Henderson

13

Ini bekerja untuk saya:

  1. Ran chkdsk /f
  2. Reboot PC
  3. Kemudian saya dapat memilih dan menghapus file

4

Tutup semua file, jika ada yang dibuka, yang disimpan di drive yang berisi file tersebut. Sekarang, Buka properti drive.

"Komputer Saya" -> "Klik kanan pada drive ini"> properti

Lalu, buka tab " Alat " dan klik " Periksa sekarang " di bawah label 'Pemeriksaan Kesalahan'.

masukkan deskripsi gambar di siniKlik di sini untuk gambar yang lebih besar

Ini akan melepas drive Anda dan akan memindai seluruh drive untuk mencari kesalahan, akhirnya ia akan menghapus file tersebut dengan nama ilegal. Pada penyelesaian itu akan menampilkan pesan yang mengatakan beberapa file diperbaiki.

Saya berhasil menghapus file seperti itu dari hard disk eksternal saya.


3

Saya memiliki Subsistem untuk Aplikasi berbasis UNIX yang diinstal pada PC saya (Windows 7). Dari shell Windows, saya dapat membuat file dengan touch 1d67c0d23e859ed4a259749e4a720d9e:default-sink, lalu menghapusnya denganrm *:*


Utilitas yang sesuai dengan POSIX (seperti SFU) dapat menghapus file tersebut.
Ausmith1

@ JoEternet: sigghh Microsoft menghapus semua subsistem non windows dengan 2012 dan lebih tinggi.
user2284570

... tetapi subsistem unix kembali lagi dalam kemenangan 10.
user165568

1

Coba ganti nama folder induk menjadi satu karakter (a, 1, dll.) Lalu coba hapus folder induk. Jika tidak berhasil maka pindah ke folder anak pertama dan ganti namanya menjadi satu karakter dan coba hapus lagi. Saya sering menggunakan metode ini untuk file dengan karakter yang tidak valid (jangan tanya saya bagaimana mereka dibuat karena saya tidak tahu) atau untuk file di mana jalur melebihi maksimum (sekali lagi, jangan tanya bagaimana ini terjadi).


1

7zip dapat menghapus file yang gagal Windows; Saya telah menggunakannya di masa lalu ketika berhadapan dengan nama file yang terlalu panjang, tetapi saya belum pernah mencobanya pada file dengan titik dua. Biasanya akan digunakan untuk menunjukkan ADS.


Ini karena 7-zip menggunakan cygwin.
user2284570

1
Tidak berfungsi untuk kedua file saya. File pertama memiliki nama file dengan backslash dan file kedua memiliki nama file dengan titik dua.
Pacerier

Tidak, itu karena 7-zip menggunakan Windows API sebagai ganti shell. Ini memiliki batasan yang sama dengan API: menurutnya titik dua menunjukkan aliran.
user165568

7zip bekerja untuk saya
user1278519

1

Saya memiliki sistem dual boot, dan jawaban di atas tidak bekerja untuk saya. Jika file tersebut terletak di disk yang dipasang oleh OS Anda yang lain (Ubuntu 16,04 LTS untuk saya), Anda dapat dengan mudah menghapusnya menggunakan OS Anda yang lain;)


Ini cukup masuk akal ketika dalam keadaan terikat (meskipun tidak dapat dilakukan ke mesin online). Juga, dual boot asli tidak diperlukan, karena kami dapat mem-boot distribusi langsung untuk melakukan ini seperti disk installer Fedora atau Knoppix. NAMUN, seseorang harus berhati-hati ketika berada dalam lingkungan seperti ini, karena driver NTFS3G yang kita gunakan untuk me-mount sistem ini tidak akan menghormati sebagian besar izin Windows / ACL (itulah sebabnya sangat efektif untuk menghilangkan file "macet") .
Pengumpul informasi

0

Sudahkah Anda mencoba mengutip nama file? Memberi perintah tepat yang Anda jalankan akan berguna.


Saya telah menambahkannya ke perintah persis yang saya jalankan untuk dipertanyakan.
grom

0

Sudahkah Anda mencoba menggunakan wildcard? Misalnya 'del 1d67c0d23e859ed4a259749e4a720d9e *. *' Mungkin berfungsi.


Anda saya mencoba wildcard. Tidak beruntung
grom

1
Hal berikutnya yang saya pikirkan adalah mem-boot sistem dengan linux linux (seperti system rescue cd), pasang volumenya di sana dan coba hapus dari sana. Anda mungkin mendapatkan hasil yang menarik pada saat itu, karena siapa yang tahu apa yang sebenarnya terjadi di sistem file.
Michael Kohne

@MichaelKohne: Saya pikir menggunakan implementasi jalur Unix adalah solusi yang tepat juga. Tapi mengapa menggunakan linux? windows dijalankan sebagai subsistem NT, dan sudah ada subsistem POSIX / Unix NT.
user2284570

1
@ user2284570 - karena mengingat fakta bahwa mereka dibuat dengan Linux, tampaknya driver linux NTFS memungkinkan sesuatu yang seharusnya tidak dimiliki, yang bahkan Windows POSIX shell mungkin tidak dapat menyelinap melewati driver sistem file. Jauh lebih mudah untuk mem-boot CD linux langsung, menghapus file palsu, dan reboot kembali ke Windows.
Michael Kohne

@MichaelKohne: Tidak, karena jalur UNC sudah berfungsi (subsistem asli) , dan dengan subsistem POSIX tidak ada akses langsung ke aliran data alternatif, sehingga Anda dapat menggunakan :file di dalam.
user2284570

0

Sudahkah Anda mencoba dir / X untuk mencari tahu nama 8.3 yang sebenarnya, dan kemudian mencoba menghapus nama itu?

Atau, dapatkah file itu memiliki aliran data alternatif? Anda mungkin ingin melihatnya dengan alat di http://www.nirsoft.net/utils/alternate_data_streams.html untuk melihat apa yang dapat memberitahu Anda (saya tidak pernah menggunakan alat itu, itu hanya muncul ketika saya mencari) .


0

Saya memiliki folder dengan nama komma. Saya mencoba beberapa saran di atas dan tidak dapat membuatnya bekerja.

Saya dapat menghapus folder dengan cygwin. Memasang aplikasi itu bukan untuk semua orang, tetapi itu akan berhasil.


0

Tidak ada saran di atas yang berfungsi untuk saya. Saya menggunakan WinRar. Buka winrar dan Anda akan melihat daftar file, di mana Anda akan menduga file "nama file" (yang dibuat oleh Anda sebagai "nama file: some_text.txt". Ganti nama file di Winrar dan berikan ekstensi (seperti .txt atau .dokter).

Kembali ke Windows Explorer Anda akan melihat "nama file .txt" (Atau doc). Hapus itu dari sana.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.