31

我正在运行一个命令

hg st

然后检查它$LASTEXITCODE以检查当前目录中 mercurial 的可用性。我不关心它的输出,也不想向我的用户展示它。

如何抑制所有输出、成功或错误?

由于 mercurial 不是 PowerShell 命令行开关hg st | Out-Null不起作用。

4

3 回答 3

61

Out-Null适用于非 PowerShell 命令。但是,它不会抑制 on 的输出STDERR,只会抑制 on 的输出STDOUT。如果您还想抑制输出,STDERR则必须将该文件描述符重定向到,STDOUT然后再将输出管道传输到Out-Null

hg st 2>&1 | Out-Null

2>重定向来自STDERR(文件描述符#2)的所有输出。&1将重定向的输出与STDOUT(文件描述符#1)的输出合并。然后将组合输出打印到STDOUT管道可以将其输入管道中STDIN下一个命令的位置(在本例中Out-Null)。请参阅Get-Help about_Redirection以获取更多信息。

于 2013-05-24T22:52:38.433 回答
8

您可以做的一件有趣的事情是将输出通过管道传输到 Write-Verbose,然后如果需要,您仍然可以通过使用 -Verbose 开关运行脚本来查看它。

ping -n 2 $APP 2>&1 | Write-Verbose
于 2018-05-25T13:35:13.920 回答
6

这个也可以

hg st *> $null

Powershell 抑制控制台输出

于 2014-06-20T16:36:45.183 回答