什么> nul 2>&1表示批量声明

Mis*_*tyD 17 batch-file

我目前有一个看起来像这样的批处理语句

findstr "PreprocessorDefinitions=.*%D_KEYWORD%" %PROJ% > nul 2>&1
if errorlevel 1 (
    set D_OPT=
) else (
    set D_OPT=/D%D_KEYWORD%
)
Run Code Online (Sandbox Code Playgroud)

我想知道以下是什么意思?

> nul 2>&1
Run Code Online (Sandbox Code Playgroud)

我看了看这里并说明了这一点

... >nul 2>nul
Run Code Online (Sandbox Code Playgroud)

表示忽略命令输出并忽略错误消息

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

 findstr "PreprocessorDefinitions=.*%D_KEYWORD%" %PROJ% > nul 2>&1
Run Code Online (Sandbox Code Playgroud)

显示所有内容而不是忽略错误消息

iAd*_*nct 35

不要使用管道操作员,这就是">".

所有程序都有三个流:

  • 标准输入(来自控制台的输入)
  • 标准输出(通用日志/ UI输出到控制台)
  • 标准错误(记录/ UI输出到控制台意味着错误消息或其他异常行为)

命令> nul

^这表示将标准输出流管道为null.

命令2> nul

^这表示将标准错误流传递给null.

命令2>&1

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

  • 你说不要使用它,但你没有解释为什么 (9认同)
  • ">"实际上是一个重定向操作符;“|” 是管道操作员。 (7认同)