How do I remove a file named "NUL" on Windows?
Solution 1
Try
Del \\?\C:\My\Path\NUL
in the command prompt.
See this Microsoft Support article for details: You cannot delete a file or a folder on an NTFS file system volume, under "Cause 5: The file name includes a reserved name in the Win32 name space".
Solution 2
Alternatively if you have Cygwin installed, you may want to know, that it has no problem with such files or folders. Particularly,
rm -r /cygdrive/c/path/to/the/file/or/folder/you/want/to/delete
typed in the Cygwin terminal deletes the file or folder named nul
or a folder, containing it. This is also applicable to other special file names such as CON
, PRN
, AUX
, COM1
, COM2
, COM3
, COM4
, COM5
, COM6
, COM7
, COM8
, COM9
, LPT1
, LPT2
, LPT3
, LPT4
, LPT5
, LPT6
, LPT7
, LPT8
.
Solution 3
I'm adding this here because it is high in the google results and I had a similar issue for a folder named NUL. Unfortunately the above fixes didnt help. Neither did a ton of other stuff I looked at.
I tried rmdir\\?\C:\My\Path\NUL
and rmdir\\.\C:\My\Path\NUL
without any success and also tried several commands using bash from my SourceTree installation. No joy.
In the end I used DIR /X /A
from cmd to list the short names in the parent directory. This returned NUL~1
for my NUL folder.
This was then used in the standard command rmdir /s NUL~1
and finally fixed the problem.
Solution 4
If you have Git for Windows Installed do the following
- Open the directory containing the files you want to remove
- Left Click and select
Git Bash Here
- Type
rm nul.json
at the command prompt and hit ENTER, the file now should be removed.
NOTE: These screenshots show the removal of file nul.topo.json
which is another file that I could not removed with a simple delete.
Solution 5
If you have PowerShell 6.1.0 (Sep 2018) or higher:
https://github.com/PowerShell/PowerShell/releases/tag/v6.1.0
you can do something like this:
Remove-Item -LiteralPath \\?\C:\NUL
Another option is this Go program:
package main
import "os"
func main() {
os.Remove(`\\?\C:\NUL`)
}
Related videos on Youtube
Greg Mattes
I am the founder of a small development shop in upstate New York.
Updated on September 18, 2022Comments
-
Greg Mattes over 1 year
I have a Windows XP box (NTFS filesystem) on which I found a file named
NUL
. I have not been able to remove this file in any usual way. The file appears to be owned byAdministrator
in theSYSTEM
group, unlike any other file in the same directory (the other files are owned by my user id).How do I get rid of this file? Where did it come from?
-
Admin about 13 yearsNUL is a system reserved word; see this Wikipedia article. A file named NUL should never exist on the filesystem; this may be caused by buggy software. You may be able to remove it using the
DELETE
command using Command Prompt. -
Admin about 13 years@DragonLord: The filesystem doesn't have a problem with such names; for example, you can create such files within a POSIX environment. (One can find
aux.c
and similar names in software source code.) It's purely the Win32 API that manages these "device names". -
Admin about 9 yearsThe same applies to CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9, and CLOCK$ plus a few others - see en.wikipedia.org/wiki/…
-
Admin about 7 yearsCygwin creates (or used to) a file called "nul", usually seen in "C:\cygwin\dev\nul". This is the one that I hit once every few years, I Google, and I'm brought back (again) to this question.
-
-
user1686 about 13 yearsI'm not sure it actually means that. The
\\.\
prefix is for the device namespace, but there is no explicit mention that.
has the same meaning ("current X") as it does for directory names. -
user541686 about 13 years@grawity: Whoops good point, it's an alias for the \DosDevices\ namespace, my bad.
-
HenrikB over 10 yearsAs an alternative to above solution if your working directory is already the directory with the
nul
file, you can:del "\\?\%CD%\nul"
The%CD%
part is expanded to the working directory and the double quotation marks ("
) make it all handle also pathnames with "odd" symbols, e.g."\\?\C:\path,with\comma\nul"
. -
JustinC over 10 yearsIt did not not seem to be effective from powershell or an administratively elevated prompt in my environment, but worked effectively in a standard terminal.
-
c33s over 7 yearsalso works with git bash
-
SamB almost 7 yearsHmm, that's pretty clever using the short name to bypass the special name.
-
icc97 over 6 yearsIf you have installed Git then you've got the GNU
rm
command so you don't need cygwin. Assuming you add the GNU tools bin directory to your PATH you can use all the GNU goodies from cmd. -
wphampton almost 3 years
rm NUL
if your file is namedNUL
like the OP.