在Windows命令行中禁止显示错误消息

cha*_*qus 12 windows shell batch-file

假设我已经在下一个路径文件上创建了一个文件夹:"C:\users\charqus\desktop\MyFolder",然后在CMD上运行下一个命令:

mkdir "C:\users\charqus\desktop\MyFolder"
Run Code Online (Sandbox Code Playgroud)

我收到这样的消息:"子目录或文件C:\ users\charqus\desktop\MyFolder已经存在".

因此,命令行中是否有任何命令可以删除此返回的消息?我试着回声,但这不是我想要的.

Rog*_*and 31

将输出重定向到 nul

mkdir "C:\users\charqus\desktop\MyFolder" > nul
Run Code Online (Sandbox Code Playgroud)

根据命令,您可能还需要重定向错误:

mkdir "C:\users\charqus\desktop\MyFolder" > nul 2> nul
Run Code Online (Sandbox Code Playgroud)

Microsoft在此描述了这些选项,这对于阅读非常有用.

  • 对于OP,第二个重定向可以是"2>&1",它将STDERR发送到STDOUT已被重定向到的相同位置.在实践中使用它比使用> nul两次更常用,所以你会在代码中看到它. (4认同)
  • 是的,严格来说`> nul`重定向`stdout`和`2> nul`重定向`stderr`,这是你通常在命令窗口中看到的两个输出流.使用哪个(哪些)取决于命令本身. (2认同)

use*_*976 5

先前的答案显示了如何抑制命令的所有输出。这将删除在命令失败时显示的有用错误文本。以下示例显示了更好的方法:

C:\test>dir
     Volume in drive C has no label.
     Volume Serial Number is 4E99-B781

     Directory of C:\test

    20/08/2015  20:18    <DIR>          .
    20/08/2015  20:18    <DIR>          ..
                   0 File(s)              0 bytes
                   2 Dir(s)  214,655,188,992 bytes free

C:\test>dir new_dir >nul 2>nul || mkdir new_dir >nul 2>nul || mkdir new_dir

C:\test>dir new_dir >nul 2>nul || mkdir new_dir >nul 2>nul || mkdir new_dir
Run Code Online (Sandbox Code Playgroud)

如上所示,此命令成功抑制了原始警告。但是,如果无法创建目录,如下例所示:

C:\test>icacls c:\test /deny "Authenticated Users":(GA)
processed file: c:\test
Successfully processed 1 files; Failed processing 0 files

C:\test>dir new_dir2 >nul 2>nul || mkdir new_dir2 >nul 2>nul || mkdir new_dir2
Access is denied.
Run Code Online (Sandbox Code Playgroud)

然后可以看到,会显示描述问题的错误消息。