Uma das maneiras mais úteis de registrar e solucionar o comportamento dos comandos ou trabalhos em lote que você executa no Windows é redirecionar a saída para um arquivo.

No entanto, existem algumas maneiras diferentes de redirecionar a linha de comando para um arquivo. A opção que você escolher depende de como você quer ver a saída do seu comando.

Como funciona a saída de comandos do Windows

Quando você digita um comando no console do Windows (prompt de comando), a saída desse comando vai para dois streams separados.

  • STDOUT: Standard Out é para onde vai qualquer resposta padrão dos comandos. Por exemplo, a resposta padrão para o comando DIR é uma lista de arquivos dentro de um diretório.
  • STDERR: Standard Error é para onde qualquer mensagem de erro vai se houver um problema com o comando. Por exemplo, se não houver nenhum ficheiro no directório, o comando DIR irá sair “File Not Found” para o fluxo de erro padrão.

Pode redireccionar a saída para um ficheiro no Windows para ambos os fluxos de saída.

Redirect Standard Output Write to New File

Existem duas formas de redireccionar a saída padrão de um comando para um ficheiro. A primeira é enviar o comando de saída de escrita para um novo ficheiro sempre que executar o comando.

Para fazer isto, abra o prompt de comando e digite:

dir test.exe > myoutput.txt

O caractere > diz ao console para sair STDOUT para o ficheiro com o nome que você forneceu.

Quando você executar este comando, você notará que não há nenhuma resposta na janela de comando exceto o erro de que o arquivo não existe.

Isto porque a saída padrão para o comando foi redirecionada para um arquivo chamado myoutput.txt. O arquivo agora existe no mesmo diretório onde você executou o comando. A saída de erro padrão ainda aparece como normalmente aparece.

Note: Tenha cuidado para mudar o diretório ativo para o prompt de comando antes de executar o comando. Desta forma você saberá onde os arquivos de saída são armazenados.

Você pode ver a saída padrão que foi para o arquivo digitando “myoutput.txt” na janela de comando. Isto irá abrir o ficheiro de texto no seu visualizador de ficheiros de texto por defeito. Para a maioria das pessoas, este é normalmente o Notepad.exe.

Da próxima vez que executar o mesmo comando, o ficheiro de saída anterior será apagado. Um novo ficheiro de saída será recriado com a saída do último comando.

Redirect Standard Output Writes to the Same File

E se não quiser sobrescrever o mesmo ficheiro? Outra opção é usar >> em vez de > para redireccionar para um ficheiro de saída. No caso deste exemplo, você digitaria:

dir test.exe >> myoutput.txt

Você verá a mesma saída (apenas o erro).

Mas neste caso, em vez de sobrescrever o arquivo de saída, este comando anexa a nova saída ao arquivo de saída existente.

A cada vez que executar um comando e anexar a saída a um ficheiro, este irá escrever a nova saída padrão no final do ficheiro existente.

Redirect Standard Error To a File

Da mesma forma que pode redireccionar a saída padrão de escrita para um ficheiro, também pode escrever a saída de erro padrão para um ficheiro.

Para fazer isto, terá de adicionar 2> ao fim do comando, seguido do ficheiro de erro de saída que pretende criar.

Neste exemplo, irá escrever o comando:

dir test.exe > myoutput.txt 2> output.err

Este envia o fluxo de saída padrão para myoutput.txt, e o fluxo de erro padrão para output.err. O resultado é que nenhum fluxo de saída é exibido na janela de console.

No entanto, você pode ver as mensagens de erro digitando output.err. Isto abrirá o arquivo em seu visualizador de arquivo de texto padrão.

Como você pode ver, quaisquer mensagens de erro do comando são enviadas para o arquivo de erro. Tal como na saída padrão, você pode usar >> para anexar o erro a erros de comandos executados anteriormente.

Redirect All Output Writes to a Same File

Todas as abordagens acima resultam em múltiplos ficheiros. Um arquivo é para o fluxo de saída padrão e o outro é para o fluxo de erro padrão.

Se você quiser incluir ambos os outputs no mesmo arquivo, você também pode fazer isso. Para fazer isso, basta redirecionar todos os outputs para o mesmo arquivo usando o seguinte comando.

dir test.exe 1> myoutput.txt 2>&1

Aí está como este comando funciona:

  • O output padrão é direcionado para o arquivo de output identificado pelo output número 1.
  • A saída de erro padrão identificada pelo número 2 é redirecionada para o arquivo de saída identificado pelo número 1.

Isso irá anexar a saída de erro ao final da saída padrão.

Esta é uma maneira útil de ver todas as saídas para qualquer comando em um arquivo.

Silenciamento Padrão ou Fluxos de Saída de Erro

Pode também desligar a Saída Padrão ou Erro Padrão redirecionando a saída para um NUL ao invés de um arquivo.

Usando o exemplo acima, se você quiser apenas o Saída Padrão e nenhum Erro Padrão, você pode usar o seguinte comando:

dir test.exe 1> myoutput.txt 2>nul

Isto resultará no mesmo arquivo de saída do primeiro exemplo acima onde você apenas redirecionou a Saída Padrão, mas com este comando o erro não irá ecoar dentro da console. Também não irá criar um ficheiro de log de erros.

Isso é útil se você não se importa com nenhum erro e não quer que eles se tornem um incómodo.

Você pode executar qualquer um dos mesmos comandos de saída acima de dentro de um ficheiro BAT e a saída dessa linha irá para o ficheiro de saída que você especificar. Esta é uma forma útil de ver se algum comando dentro de um ficheiro BAT teve algum erro quando tentou correr.

Deixe uma resposta

O seu endereço de email não será publicado.