Redirecionar a saída da linha de comando do Windows para um arquivo de texto

Uma das maneiras mais úteis de registrar e solucionar problemas de comportamento de comandos ou trabalhos em lote executados no Windows é redirecionar a saída para um arquivo.

No entanto, existem algumas maneiras diferentes de redirecionar gravações de linha de comando para um arquivo. A opção escolhida depende de como você deseja visualizar a saída do comando.

Como funciona a saída do prompt de comando do Windows(How Windows Command Prompt Output Works)

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

  • STDOUT : Standard Out é para onde vão todas as respostas padrão dos comandos. Por exemplo, a resposta padrão para o comando DIR é uma lista de arquivos dentro de um diretório.
  • STDERR : Erro padrão(Standard Error) é para onde as mensagens de erro vão se houver um problema com o comando. Por exemplo, se não houver nenhum arquivo no diretório, o comando DIR exibirá “ (DIR)Arquivo(File) não encontrado” no fluxo de erro padrão .(Standard Error)

Você pode redirecionar a saída para um arquivo no Windows para ambos os fluxos de saída.

Redirecionar a gravação de saída padrão para um novo arquivo(Redirect Standard Output Write to New File)

Existem duas maneiras de redirecionar a saída padrão de um comando para um arquivo. A primeira é enviar a gravação de saída do comando para um novo arquivo toda vez que você executar o comando.

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

dir test.exe > myoutput.txt

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

Ao executar este comando(run this command) , você notará que não há nenhuma resposta na janela de comando, exceto o erro de que o arquivo não existe.

Isso ocorre porque a saída padrão do comando foi redirecionada para um arquivo chamado myoutput.txt. O arquivo agora existe no mesmo diretório em que você executou o comando. A saída de erro padrão ainda é exibida como normalmente.

Nota(Note) : Tenha cuidado para alterar o diretório ativo(change the active directory) do prompt de comando antes de executar o comando. Dessa forma, você saberá onde os arquivos de saída estão armazenados.

Você pode visualizar a saída padrão que foi para o arquivo digitando “myoutput.txt” na janela de comando. Isso abrirá o arquivo de texto em seu visualizador de arquivos de texto padrão. Para a maioria das pessoas, geralmente é o Notepad.exe .

Na próxima vez que você executar o mesmo comando, o arquivo de saída anterior será excluído. Um novo arquivo de saída será recriado com a saída do comando mais recente.

Redirecionar gravações de saída padrão para o (Standard Output)mesmo arquivo(Same File)

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

dir test.exe >> myoutput.txt

Você verá a mesma saída (somente 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.

Toda vez que você executar um comando e anexar a saída a um arquivo, ele gravará a nova saída padrão no final do arquivo existente.

Redirecionar erro padrão para um arquivo(Redirect Standard Error To a File)

Da mesma forma que você pode redirecionar as gravações de saída padrão para um arquivo, você também pode enviar o fluxo de erro padrão para um arquivo.

Para fazer isso, você precisará adicionar 2> ao final do comando, seguido pelo arquivo de erro de saída que deseja criar.

Neste exemplo, você digitará o comando: 

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

Isso 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 do console.

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

Como você pode ver, todas as mensagens de erro do comando são enviadas para o arquivo de erro. Assim(Just) como na saída padrão, você pode usar >> em vez de anexar o erro aos erros de comandos executados anteriormente.

Redirecionar todas as gravações de saída para um mesmo arquivo(Redirect All Output Writes to a Same File)

Todas as abordagens acima resultam em vários arquivos. Um arquivo é para o fluxo de saída padrão e o outro é para o fluxo de erro padrão.

Se você quiser incluir essas duas saídas no mesmo arquivo, também poderá fazer isso. Para fazer isso, você só precisa redirecionar toda a saída para o mesmo arquivo usando o seguinte comando.

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

Veja como esse comando funciona:

  • A saída padrão é direcionada para o arquivo de saída identificado pela saída 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 anexará a saída de erro ao final da saída padrão.

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

Silenciando fluxos de saída padrão ou de erro(Silencing Standard or Error Output Streams)

Você também pode desativar a saída padrão(Standard Output) ou o erro padrão(Standard Error) redirecionando a saída para um NUL em vez de um arquivo.

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

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

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

Isso é útil se você não se importa com erros 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 arquivo BAT(inside a BAT file) e a saída dessa linha irá para o arquivo de saída que você especificar. Essa é uma maneira útil de ver se algum comando em um arquivo BAT teve algum erro quando tentou ser executado.



About the author

Eu sou um programador de computador, e tenho sido há mais de 15 anos. Minhas habilidades estão no desenvolvimento e manutenção de aplicativos de software, além de fornecer suporte técnico para esses aplicativos. Também ensinei programação de computadores para alunos do ensino médio e atualmente sou instrutor profissional.



Related posts