假设我已经在文件路径下创建了一个名为"C:\users\charqus\desktop\MyFolder"
的文件夹,并在CMD中运行了以下命令:
mkdir "C:\users\charqus\desktop\MyFolder"
我收到了这样的消息:"子目录或文件C:\users\charqus\desktop\MyFolder已经存在".
因此,是否有命令可以在命令行中摆脱这些返回的消息? 我尝试了echo off但这不是我要找的。
假设我已经在文件路径下创建了一个名为"C:\users\charqus\desktop\MyFolder"
的文件夹,并在CMD中运行了以下命令:
mkdir "C:\users\charqus\desktop\MyFolder"
我收到了这样的消息:"子目录或文件C:\users\charqus\desktop\MyFolder已经存在".
因此,是否有命令可以在命令行中摆脱这些返回的消息? 我尝试了echo off但这不是我要找的。
将输出重定向到 nul
mkdir "C:\users\charqus\desktop\MyFolder" > nul
根据命令的不同,您可能还需要重定向错误信息:
mkdir "C:\users\charqus\desktop\MyFolder" > nul 2> nul
Microsoft在此处描述了选项,这是有用的阅读。
>nul
重定向的是标准输出流 stdout
,而 2>nul
重定向的是错误输出流 stderr
。这两个输出流通常出现在命令窗口中。使用哪个输出流(或同时使用哪些)取决于具体的命令。 - Roger Rowland2>&1
,它将把 STDERR 发送到已经被重定向的 STDOUT 相同的位置。在实际使用中,这种方式比使用两个 >nul 更常见,因此你会在代码中看到它的使用。 - foxidrive之前的回答展示了如何压制命令的所有输出。这会移除在命令执行失败时显示的有用错误信息。下面的例子展示了更好的方法:
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
如上所示,此命令成功地抑制了原始警告。然而,如果目录无法创建,就像以下示例中:
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.
IF NOT EXIST "C:\users\charqus\desktop\MyFolder\." mkdir "C:\users\charqus\desktop\MyFolder"
。 - Leptonator