Windows上是否有/ dev / null?


414

/dev/null在Windows上相当于什么?

Answers:


487

我认为您NUL至少在命令提示符或批处理文件中需要。

例如:

type c:\autoexec.bat > NUL

不创建文件。

(我相信,如果您尝试以编程方式创建文件,同样如此,但我没有尝试过。)

在PowerShell中,您需要$null

echo 1 > $null

20
@capthive:/dev/null.txt和/dev/null/foo.txt之间有区别。
乔恩·斯基特

2
我只是再次看了一下,然后撤回了原来的声明。我正在写代码,但错误被吞没了。我正在删除它,所以没有人不小心将其作为事实。
Jim Hunziker 2010年

3
为人们寻找适用于Windows的Unix下的“特殊”文件:这里/dev/random/dev/zero设备驱动程序为Win32。
ulidtko 2014年

9
@CoDEmanX:这不是我的经验。写入控制台-甚至文件-可能要花费大量时间。我刚刚用编写“ Hello there”的程序进行了测试,测试输出了10000000次。重定向到文件(在SSD上)需要18秒钟。重定向到NUL需要4秒钟。完全不重定向使我在一段时间后因缺乏耐心而放弃了……
Jon Skeet 2015年

2
我在Win95的时候学到的背部,你应该写经特殊设备名称冒号,所以NUL:(和CON:PRN:......),它主要的风格,清楚地显示出一个问题是NUL:是一种特殊的对象,而不是一个名为文件NUL。而且,可以使用特殊的API来创建一个名为的文件NUL(请参阅答案之一)。我梦想也许有一天,如果每个人都按照惯例使用冒号,我们将能够弃用可怕的特殊设备名称:-)
jdm

65

根据GCC邮件列表上的消息,可以使用文件“ nul”代替/ 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;
}

(致谢Danny此代码;复制并粘贴了他的消息。)

您也可以通过重定向使用此特殊的“ nul”文件。


1
嗯,所以这解释了为什么,如果您C:\dev在Windows中创建目录,并且使用了大量的GNU实用程序,最终将在该目录中获取一个名为null的神秘文件。
Klitos Kyriacou

50

NUL在Windows中似乎实际上是任何文件夹中的虚拟路径。就像...在任何文件系统。

使用任何带有NUL的文件夹都将起作用。

例,

echo 1 > nul
echo 1 > c:\nul
echo 1 > c:\users\nul
echo 1 > c:\windows\nul

与...具有相同的效果 /dev/null Linux上的。

已在Windows 7(64位)上进行了测试。


7
不错,无法在Windows 7 64bit上创建名为“ nul”的文件:)
David FerenczyRogožan2015年

7
@DawidFerenczy有可能,尽管不是经典方式。例如md \\.\c:\nul quora.com/...gohacking.com/how-to-create-con-folder-in-windowssuperuser.com/questions/86999/...
phuclv

1
在bash的Windows 10上,第一个创建文件nul
-DrumM

在Win10中使用Java引发IOException。只需将其包装在try catch上即可。希望像/ dev / null一样没有例外/错误
MDuh


9

NUL以编程方式工作。例如以下内容:

freopen("NUL", "w", stderr);

可以正常工作,而无需创建文件。(MSVC ++ 12.0)


1
这个问题只需要回答很多次NUL,而5年前已经超过了这一点。
miken32 '17

6
我认为这个答案为讨论提供了有效的帮助。
Jeroen

3

如果您需要在Microsoft Windows中执行与/dev/nullLinux 中的符号链接等效的操作,则可以打开并输入管理员的名称cmd并输入:

对于文件:

mklink c:\path\to\file.ext NUL:

或者,对于目录:

mklink /D c:\path\to\dir NUL:

这将使文件/ Direcotry始终保持为0字节,并且仍将成功返回到每次写尝试。


-1

Windows PowerShell中,必须为此使用start$ NUL

假设mySum您的应用程序名称是您5 10要发送的命令行参数,请键入此命令。

start .\mySum  5 10 > $NUL 2>&1

start命令将启动一个分离的过程,效果与相似&/B如果您正在运行的程序是控制台应用程序,则该选项阻止启动程序打开新的终端窗口。和NULWindows等效/dev/null。将2>&1在年底将标准错误重定向到标准输出,这将都去NUL


为什么要下票?请解释
HaSeeB MiR
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.