Windows上/dev/null的等价程序是什么?
当前回答
在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上测试的。
其他回答
在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 PowerShell中,你必须使用start和$NUL:
输入这个命令,假设mySum是你的应用程序的名称,5 10是你要发送的命令行参数。
start .\mySum 5 10 > $NUL 2>&1
start命令将启动一个分离的进程,效果与&类似。如果您正在运行的程序是控制台应用程序,则/B选项防止启动打开新的终端窗口。NUL在Windows中相当于/dev/null最后的2>&1将stderr重定向到stdout, stdout将全部指向NUL。
NUL也可以通过编程方式工作。例如:
freopen("NUL", "w", stderr);
按预期工作,无需创建文件。(MSVC + + 12.0)
乔恩·斯基特说得对。这里是Windows嵌入式文档中的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)进行验证。
推荐文章
- 我如何找到哪个程序正在使用端口80在Windows?
- 在Windows中有像GREP这样的模式匹配实用程序吗?
- 如何在Windows命令提示符下运行.sh ?
- 如何从命令行在windows中找到mysql数据目录
- 在没有事件源注册的情况下写入Windows应用程序事件日志
- 无法在Windows上从/usr/local/ssl/openssl.cnf加载配置信息
- GIT克隆在windows中跨本地文件系统回购
- 如何运行一个PowerShell脚本而不显示窗口?
- PowerShell:仅为单个命令设置环境变量
- 为什么这个Windows批处理文件只执行第一行,而在命令shell中执行所有三行?
- 环境变量存储在Windows注册表的哪里?
- 有一个好的Valgrind Windows的替代品吗?
- Windows和Linux上的c++编译:ifdef开关
- 如何验证批处理文件中是否存在一个文件?
- XAMPP -端口80被PID 4的“无法打开进程”使用!12