Windows上/dev/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)进行验证。
其他回答
在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。但是我们不能去看它。
我认为您需要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)进行验证。
NUL也可以通过编程方式工作。例如:
freopen("NUL", "w", stderr);
按预期工作,无需创建文件。(MSVC + + 12.0)
在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。
推荐文章
- 如何运行一个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