Windows Tidak Dapat Menghapus ._. Mengajukan

91

Saat ini saya memiliki file di root dari hard drive eksternal saya yang diberi nama ._., yang saya duga telah ditambahkan ke hard drive saya setelah menggunakannya di MacBook saya beberapa waktu yang lalu. Saya mencoba menghapus file ini di mesin Windows 10 saya; namun Windows terus mengklaim file tidak dapat ditemukan.

Pesan kesalahan dari Windows Explorer

Saya juga mencoba menghapus file melalui command prompt yang ditinggikan; namun pesan yang sama dikembalikan.

Pesan kesalahan dari prompt perintah yang ditinggikan

Apakah ada cara saya dapat menghapus file ini dari hard drive saya melalui Windows?

Mike Koch
sumber
7
@ rr- kesengsaraan yang dapat Anda lakukan dengan nama file unix cenderung jauh lebih besar. : 3
Martijn
5
Prompt perintah Anda menunjukkan sesuatu yang aneh. Anda melakukannya find "._."tetapi tidak memberikan tanda kutip untuk del ._.. Apakah kamu sudah mencoba del "._."?
jpmc26
1
fenomena menarik. terutama betapa sulitnya untuk menghapus. Apakah Anda yakin file itu dibuat secara sah? (penamaan itu terdengar sangat aneh bahkan untuk mac)
Thomas
30
Bagian favorit saya adalah ekspresi file dari upaya Anda untuk menghapusnya.
Pekerja
8
"._."Anda tidak dapat menghapus ini karena koala adalah spesies yang dilindungi.

Jawaban:

146

Jalankan perintah berikut (bisa memerlukan hak tinggi / buka command prompt sebagai administrator):

del "\\?\F:\._."

Tentang \\?\awalan :

Untuk file I / O, \\?\awalan " " ke string path memberi tahu Windows API untuk menonaktifkan semua string parsing dan mengirim string yang mengikutinya langsung ke sistem file.

...

Karena mematikan ekspansi string path secara otomatis, " \\?\" awalannya juga memungkinkan penggunaan " .." dan " ." dalam nama path, yang dapat berguna jika Anda mencoba melakukan operasi pada file dengan path relatif yang disediakan khusus ini penentu sebagai bagian dari jalur yang sepenuhnya memenuhi syarat.

Perhatikan bahwa Anda tidak dapat menggunakan \\?\awalan " " dengan jalur relatif.

Contoh :

==> set prog>"\\?\D:\bat\Unusual Names\._."

==> dir "D:\bat\Unusual Names\*"|find "._."
08.11.2015  13:25               132 ._.

==> type "D:\bat\Unusual Names\._."
The system cannot find the file specified.

==> type "\\?\D:\bat\Unusual Names\._."
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files

==> del "D:\bat\Unusual Names\._."
Could Not Find D:\bat\Unusual Names\._.

==> del "\\?\D:\bat\Unusual Names\._."

==> dir "D:\bat\Unusual Names\*"|find "._."

==>
JosefZ
sumber
Dimungkinkan untuk menggunakan awalan itu dengan URL, al a startperintah?
Steven Penny
Anda tidak menggunakan ini dengan URL. Anda menggunakan tanda kutip ganda jika Anda ingin menjalankan URL dari perintah mulai.
Nelson
1
... Bisakah ini digunakan untuk melewati batas panjang? (Misalnya, hapus node_modulesdirektori.)
jpmc26
1
@ jpmc26 Sesuai MSDN (lihat tautan yang disediakan dalam jawaban saya), ya. Namun, saya bertemu skenario di mana \\?\ awalan yang digunakan delatau rmdirperintah tidak membantu. Beralih ke 7-zippengelola file.
JosefZ
2
@ jpmc26: Ini dapat melewati beberapa batas panjang. Pada dasarnya, jalur yang diperluas memiliki batas panjang 32 ribu. Tetapi sebagian besar jalur suka C:\Windowsatau ..tidak diperluas, dan mereka memiliki batas panjang hanya 260. Batas 260 itu diberlakukan di banyak tempat; sayangnya beberapa tempat itu salah menerapkan batas itu juga untuk jalur `\\?`.
MSalters
24

Meskipun pertanyaan telah dijawab, saya masih ingin menawarkan solusi alternatif yang mungkin: menggunakan "nama pendek" lama (yang dapat Anda tampilkan dengan opsi "/ x" ke perintah dir) juga dapat memungkinkan Anda untuk memahami file dengan nama "funky" yang tidak bisa Anda tangani jika tidak:

C:\temp\test>dir
 Volume in drive C has no label.
 Volume Serial Number is 887A-5E48

 Directory of C:\temp\test

11.11.2015  16:31    <DIR>          .
11.11.2015  16:31    <DIR>          ..
11.11.2015  16:31                 7 ._.
               1 File(s)              7 bytes
               2 Dir(s)  44.966.129.664 bytes free

C:\temp\test>dir /x
 Volume in drive C has no label.
 Volume Serial Number is 887A-5E48

 Directory of C:\temp\test

11.11.2015  16:31    <DIR>                       .
11.11.2015  16:31    <DIR>                       ..
11.11.2015  16:31                 7 _3E35~1      ._.
               1 File(s)              7 bytes
               2 Dir(s)  44.966.129.664 bytes free

C:\temp\test>del _3e35~1

C:\temp\test>dir
 Volume in drive C has no label.
 Volume Serial Number is 887A-5E48

 Directory of C:\temp\test

11.11.2015  16:31    <DIR>          .
11.11.2015  16:31    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  44.966.129.664 bytes free
Tamu
sumber
20

Instal 7-zip , buka dan gunakan menu file-nya untuk mengubah nama file menjadi nama normal (misalnya untuk aaa) dan kemudian Anda dapat menghapusnya. Ditemukan di pos ini .

Saya menguji ini pada Windows XP yang berjalan di VM. Saya menggunakan Linux untuk membuat file yang dipanggil ._.pada direktori bersama.

NZD
sumber
-4

Buka op windows explorer Anda, navigasikan ke file. Ganti nama file seperti: filename.txt Sekarang Anda dapat menghapusnya. Jika Anda tidak dapat melakukan ini maka Anda harus yakin memiliki hak admin.

(btw alasan mengapa Anda tidak dapat menghapusnya adalah karena nama file sebenarnya tidak memiliki nama dan ekstensi tidak valid. Nama file adalah "." dan ekstensi adalah "__." yang tidak diizinkan.)

Arie Klep
sumber
1
@ The_IT_Guy_You_Don't_Like Saya ingin tahu, di mana OP menyebutkan itu?
muru
@Arie Klep, saya mengambil kata-kata saya kembali. Saya pasti sudah membacanya dalam pertanyaan lain yang serupa
pun
-8

Anda dapat menghapus file dengan 1) Mengambil kepemilikan 2) memberikan administrator (Anda) izin penuh 3) Lakukan apa yang Anda inginkan dengan file

Permintaan CMD tinggi

takeown / f Path Lengkap ke File yang Tidak Dihapus (item terakhir harus file yang tidak dapat dihapus)

icacls Path Lengkap ke Administrator file / hibah Undeletable: f

Menghapus berkas

pengguna53336
sumber
26
Masalahnya tampaknya adalah bahwa Windows tidak dapat mengakses file sama sekali, karena nama file yang tidak sesuai, jadi saya akan sangat terkejut jika jawaban ini berfungsi.
Scott