Bagaimana cara menghapus file bernama "NUL" di Windows?

49

Saya memiliki kotak Windows XP (sistem file NTFS) tempat saya menemukan file bernama NUL. Saya belum dapat menghapus file ini dengan cara biasa. File tersebut tampaknya dimiliki oleh Administratordalam SYSTEMgrup, tidak seperti file lain di direktori yang sama (file lain dimiliki oleh id pengguna saya).

Bagaimana cara saya menyingkirkan file ini? Dari mana asalnya?

Greg Mattes
sumber
3
NUL adalah kata yang dilindungi sistem; lihat artikel Wikipedia ini . File bernama NUL seharusnya tidak pernah ada di sistem file; ini mungkin disebabkan oleh perangkat lunak kereta. Anda mungkin dapat menghapusnya menggunakan DELETEperintah menggunakan Command Prompt.
bwDraco
9
@DragonLord: Sistem file tidak memiliki masalah dengan nama-nama tersebut; misalnya, Anda dapat membuat file seperti itu dalam lingkungan POSIX. (Orang dapat menemukan aux.cdan nama-nama serupa dalam kode sumber perangkat lunak.) Ini murni Win32 API yang mengelola "nama perangkat" ini.
grawity
Hal yang sama berlaku untuk CON, PRN, AUX, NUL, COM1, COM2, COM3, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9, dan CLOCK $ plus beberapa lainnya - lihat en.wikipedia.org/wiki/…
robocat
Cygwin membuat (atau dulu) file bernama "nul", biasanya terlihat di "C: \ cygwin \ dev \ nul". Ini adalah yang saya tekan sekali setiap beberapa tahun, saya Google, dan saya dibawa kembali (lagi) ke pertanyaan ini.
zarchasmpgmr

Jawaban:

83

Mencoba

Del \\?\C:\My\Path\NUL

di command prompt.

Lihat artikel Dukungan Microsoft ini untuk perincian: Anda tidak dapat menghapus file atau folder pada volume sistem file NTFS , di bawah "Penyebab 5: Nama file termasuk nama yang dipesan dalam ruang nama Win32".

Mehrdad
sumber
1
Terima kasih! Itu berhasil! Juga, terima kasih atas referensi yang bagus untuk dokumentasi otoritatif. Saya menemukan sesuatu dalam pencarian web yang sangat mirip, tetapi tidak berhasil. Saran itu ada .di tempat ?.
Greg Mattes
1
@Reg: Tentu! Dokumentasinya adalah bantuan @ DragonLord. :-) Dan yeah, menempatkan .bukannya ?tidak cukup melakukan hal yang sama - tanda tanya mencegah pemrosesan lebih lanjut oleh subsistem, sedangkan periode berarti "mesin saat ini" ... bukan hal yang sama, meskipun sudah pasti membingungkan. :)
Mehrdad
1
Saya tidak yakin itu benar-benar berarti. The \\.\ prefix adalah untuk perangkat namespace , tetapi tidak ada eksplisit menyebutkan bahwa .memiliki makna yang sama ( "saat X") seperti halnya untuk nama direktori.
grawity
4
Sebagai alternatif untuk solusi di atas jika direktori kerja Anda sudah direktori dengan nulfile, Anda dapat: del "\\?\%CD%\nul"Bagian %CD%diperluas ke direktori kerja dan tanda kutip ganda ( ") menjadikan semuanya menangani juga nama path dengan simbol "aneh", misalnya "\\?\C:\path,with\comma\nul".
HenrikB
1
Tampaknya tidak efektif dari PowerShell atau permintaan yang meningkat secara administratif di lingkungan saya, tetapi bekerja secara efektif di terminal standar.
JustinC
13

Atau jika Anda telah menginstal Cygwin , Anda mungkin ingin tahu, bahwa itu tidak ada masalah dengan file atau folder tersebut. Terutama,

rm -r /cygdrive/c/path/to/the/file/or/folder/you/want/to/delete

diketik di terminal Cygwin menghapus file atau folder bernama nulatau folder, yang mengandungnya. Hal ini juga berlaku untuk nama file khusus lainnya seperti CON, PRN, AUX, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8.

fiktor
sumber
2
juga bekerja dengan git bash
c33s
Jika Anda telah menginstal Git maka Anda sudah mendapatkan rmperintah GNU sehingga Anda tidak perlu cygwin. Dengan asumsi Anda menambahkan direktori bin alat GNU ke PATH Anda, Anda dapat menggunakan semua barang GNU dari cmd.
icc97
8

Saya menambahkan ini di sini karena ini tinggi di hasil google dan saya punya masalah serupa untuk folder bernama NUL. Sayangnya perbaikan di atas tidak membantu. Saya juga tidak melihat banyak hal lainnya.

Saya mencoba rmdir\\?\C:\My\Path\NULdan rmdir\\.\C:\My\Path\NULtanpa hasil dan juga mencoba beberapa perintah menggunakan bash dari instalasi SourceTree saya. Tidak ada sukacita

Pada akhirnya saya menggunakan DIR /X /Adari cmd untuk mendaftar nama-nama pendek di direktori induk. Ini dikembalikan NUL~1untuk folder NUL saya.

Ini kemudian digunakan dalam perintah standar rmdir /s NUL~1dan akhirnya memperbaiki masalah.

sigap
sumber
Hmm, itu cukup pintar menggunakan nama pendek untuk memotong nama khusus.
SamB
1

Jika Anda menginstal Git untuk Windows, lakukan yang berikut ini

  1. Buka direktori yang berisi file yang ingin Anda hapus
  2. Klik kiri dan pilih Git Bash Here
  3. Ketik rm nul.jsonpada prompt perintah dan tekan ENTER, file sekarang harus dihapus.

jalankan Git Bash Di Sini

CATATAN: Screenshot ini menunjukkan penghapusan file nul.topo.jsonyang merupakan file lain yang tidak bisa saya hapus dengan penghapusan sederhana.

setelah eksekusi perintah

Geovani Martinez
sumber