Redirecionamento de mensagens de erro do Prompt de Comando: STDERR/STDOUT

Este artigo descreve o redirecionamento de mensagens de erro do Prompt de Comando.

Versão original do produto: Visual C++
Número original do KB: 110930

Resumo

Ao redirecionar a saída de um aplicativo usando o símbolo, as > mensagens de erro ainda são impressas na tela. Isso ocorre porque as mensagens de erro geralmente são enviadas para o fluxo de erro padrão em vez do fluxo Standard Out.

A saída de um aplicativo ou comando de console (Prompt de Comando) geralmente é enviada para dois fluxos separados. A saída regular é enviada para o STDOUT (Standard Out) e as mensagens de erro são enviadas para o STDERR (Erro Padrão). Quando você redireciona a saída do console usando o > símbolo, você só está redirecionando o STDOUT. Para redirecionar o STDERR, você precisa especificar 2> para o símbolo de redirecionamento. Isso seleciona o segundo fluxo de saída que é STDERR.

Exemplo

O comando dir file.xxx (em que file.xxx não existe) exibirá a seguinte saída:

Volume na unidade F é Número de Série de Volume de Cana Doce é 34EC-0876
Arquivo Não Encontrado

Se você redirecionar a saída para o dispositivo NUL usando dir file.xxx > nul, ainda verá a mensagem de erro:

Arquivo Não Encontrado

Para redirecionar a mensagem de erro para NUL, use o seguinte comando:

dir file.xxx 2> nul

Ou, você pode redirecionar a saída para um lugar e os erros para outro.

dir file.xxx > output.msg 2> output.err

Você pode imprimir os erros e a saída padrão em um único arquivo usando o &1 comando para redirecionar a saída do STDERR para STDOUT e, em seguida, enviar a saída do STDOUT para um arquivo:

dir file.xxx 1> output.msg 2>&1