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也可以通过编程方式工作。例如:
freopen("NUL", "w", stderr);
按预期工作,无需创建文件。(MSVC + + 12.0)
在Windows10中,如果你想像使用文件一样使用NUL。
robocopy .\test NUL /move /minage:30
# delete all files older than 30 days using robocopy
这些答案都不成立。
你会得到错误:
ERROR 123 (0x0000007B) Accessing Destination Directory \\.\NUL\
The filename, directory name, or volume label syntax is incorrect.
然而,如果你在cmd.exe中这样做,它就可以工作:
echo 1 > NUL
因此,NUL的行为与/dev/null文件不完全相同。
然而,对于robocopy命令,你可以这样做:
robocopy .\test NUL\null /move /minage:30
那么它就有用了!
在Powershell中,$null只能作为标准输出重定向
echo 1 > $null
但是你不能在像robocopy这样的命令中使用$null来代替文件。 $null\null也不能工作。
所以我所能找到的与PowerShell中的cmd.exe有相同的效果,就是从PowerShell中调用cmd.exe,就像这样:
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"
因此,NUL的行为并不完全像/dev/null文件夹,而是像一个文件夹,当用作目标文件时,其中可以有幻影文件,除非您使用>重定向,然后它的行为就像一个空设备/文件。
另外值得一提的是,cmd.exe在第一次使用时创建了一个NUL。但是我们不能去看它。
乔恩·斯基特说得对。这里是Windows嵌入式文档中的null设备驱动程序页面(我不知道为什么它不在其他地方…)
这是另一个:
注册表中的空设备 特殊文件名 关于文件命名的更多信息
根据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”文件。
推荐文章
- 如何运行一个PowerShell脚本而不显示窗口?
- PowerShell:仅为单个命令设置环境变量
- 为什么这个Windows批处理文件只执行第一行,而在命令shell中执行所有三行?
- 环境变量存储在Windows注册表的哪里?
- 有一个好的Valgrind Windows的替代品吗?
- Windows和Linux上的c++编译:ifdef开关
- 如何验证批处理文件中是否存在一个文件?
- XAMPP -端口80被PID 4的“无法打开进程”使用!12
- 为什么git在Windows下记不住我的密码
- Git克隆/拉不断冻结在“存储密钥在缓存?”
- 有没有替换Windows (Visual C)的unistd.h ?
- 从Windows批处理文件设置系统环境变量?
- 在Sublime Text 2中使用Ctrl+D进行多个选择时,我如何跳过匹配?
- #定义WIN32_LEAN_AND_MEAN具体排除了什么?
- 最好的轻量级web服务器(只有静态内容)的Windows