Batch file 什么是>;nul 2>&;1批次中的平均值

Batch file 什么是>;nul 2>&;1批次中的平均值,batch-file,Batch File,我当前有一个如下所示的批处理语句 findstr "PreprocessorDefinitions=.*%D_KEYWORD%" %PROJ% > nul 2>&1 if errorlevel 1 ( set D_OPT= ) else ( set D_OPT=/D%D_KEYWORD% ) 我想知道下面的意思是什么 > nul 2>&1 我看了看,上面说 ... >nul 2>nul 表示忽略命令输出和忽略错误消息 现在

我当前有一个如下所示的批处理语句

findstr "PreprocessorDefinitions=.*%D_KEYWORD%" %PROJ% > nul 2>&1
if errorlevel 1 (
    set D_OPT=
) else (
    set D_OPT=/D%D_KEYWORD%
)
我想知道下面的意思是什么

> nul 2>&1
我看了看,上面说

... >nul 2>nul
表示忽略命令输出和忽略错误消息

现在我的问题是如何修改这个命令

 findstr "PreprocessorDefinitions=.*%D_KEYWORD%" %PROJ% > nul 2>&1

要显示所有内容并且不忽略错误消息,请不要使用管道操作符,这就是“>”的含义

所有程序都有三个流:

  • 标准输入(来自控制台的输入)
  • 标准输出(到控制台的常规日志记录/UI输出)
  • 标准错误(针对错误消息或其他异常行为而将日志/UI输出到控制台)
命令>nul

^这表示通过管道将标准输出流设置为null

命令2>nul

^这表示通过管道将标准错误流设置为null

命令2>&1


^这表示将标准错误流传输到与标准输出流相同的位置。

标准输出将被发送到
nul
,标准错误输出(文件描述符2)将被发送到标准输出(文件描述符1),因此错误和正常输出都将被发送到相同的位置。在Windows中,
nul
是一个空设备,这意味着输出刚刚刷新,您看不到它。因此,在本例中,所有输出都被刷新。感谢您清除该选项。如果您想查看屏幕上的所有内容,只需删除
>nul 2>&1
。您可能重复说不使用它,但您没有解释为什么“>”实际上是一个重定向操作符;“|”是管道操作员。