What is the equivalent of /dev/null on Windows?
I think you want NUL, at least within a command prompt or batch files.
For example:
type c:\autoexec.bat > NUL
doesn't create a file.
(I believe the same is true if you try to create a file programmatically, but I haven't tried it.)
In PowerShell, you want $null:
echo 1 > $null
According to this message on the GCC mailing list, you can use the file "nul" instead of /dev/null:
#include <stdio.h>
int main ()
{
FILE* outfile = fopen ("/dev/null", "w");
if (outfile == NULL)
{
fputs ("could not open '/dev/null'", stderr);
}
outfile = fopen ("nul", "w");
if (outfile == NULL)
{
fputs ("could not open 'nul'", stderr);
}
return 0;
}
(Credits to Danny for this code; copy-pasted from his message.)
You can also use this special "nul" file through redirection.
Jon Skeet is correct. Here is the Nul Device Driver page in the Windows Embedded documentation (I have no idea why it's not somewhere else...).
Here is another:
If you need to perform in Microsoft Windows the equivalent of a symlink to /dev/null in Linux you would open and administrator's cmd and type:
For files:
mklink c:\path\to\file.ext NUL:
Or, for directories:
mklink /D c:\path\to\dir NUL:
This will keep the file/direcotry always at 0 byte, and still return success to every write attempt.
In Windows10, if you want to use NUL like a file e.g.
robocopy .\test NUL /move /minage:30
# delete all files older than 30 days using robocopy
These answers all don't work.
You get the error:
ERROR 123 (0x0000007B) Accessing Destination Directory \\.\NUL\
The filename, directory name, or volume label syntax is incorrect.
However, it works if you do in cmd.exe:
echo 1 > NUL
So NUL doesn't behave exactly like a /dev/null file.
However, for the robocopy command, you can do something like:
robocopy .\test NUL\null /move /minage:30
Then it works!
In Powershell, the $null works only as stdout redirection
echo 1 > $null
But you can't use $null in a command like for robocopy instead of a file.
Neither does $null\null work.
So all I could find to have the same effect like cmd.exe in PowerShell, is to call cmd.exe from within PowerShell like this:
mkdir test1
cd test1
echo "" > test1.txt
echo "" > test2.txt
echo "" > test3.txt
$path = '.\test1'
cmd.exe /c "robocopy $path NUL\null /move"
# also this works:
cmd.exe /c "robocopy $path .\NUL\null /move"
So NUL doesn't behave exactly like /dev/null folder but like a folder which can have phantom files inside it when used as a target file except you use it with > redirection, then it behaves as it is like a null device/file.
In addition it is to be mentioned that cmd.exe creates a NUL when first used. But one cannot look into it.