Windows上/dev/null的等价程序是什么?


当前回答

如果你需要在微软Windows中执行相当于Linux中/dev/null的符号链接,你可以打开和管理员的cmd并键入:

的文件:

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

或者,对于目录:

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

这将使文件/目录始终保持0字节,并仍然返回成功的每次写尝试。

其他回答

如果你需要在微软Windows中执行相当于Linux中/dev/null的符号链接,你可以打开和管理员的cmd并键入:

的文件:

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

或者,对于目录:

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

这将使文件/目录始终保持0字节,并仍然返回成功的每次写尝试。

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

例如:

type c:\autoexec.bat > NUL

不创建文件。

(我相信如果您尝试以编程方式创建一个文件,也是如此,但我还没有尝试过。)

在PowerShell中,你需要$null:

echo 1 > $null

唯一可以处理NUL的内置工具是旧的副本。 但请确保,您使用开关/b(二进制),否则内容将不会被OS缓存(这是我的目标)。

将目录(递归)放入操作系统缓存:

for /f "delims=" %f in ('dir /s /b /a-d D:\Solr\data') do @copy /b "%f" nul > nul

使用RamMap(来自Sysinternals)进行验证。

根据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;
}

(这段代码归功于丹尼;复制粘贴自他的信息。)

您还可以通过重定向使用这个特殊的“nul”文件。

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

使用任何带NUL的文件夹都可以。

的例子,

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

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

这是在64位的Windows 7上测试的。