Isso parece ser uma tarefa bem fácil. Você deseja “salvar” a saída de um comando em um arquivo. O operador > direciona a saída de um comando. Exemplo:
$ ls > file.txt
Na linha acima, a saída do comando ls (que lista os arquivos e pastas de um diretório no linux) será direcionada para o arquivo file.txt. Mas como fazer isso no windows?
$ dir > file.txt
Parece simples né? Mas há alguns dias, estava enfrentando erros para “subir” uma aplicação web. Precisava enviar a saída para um arquivo afim de analisá-la melhor, uma vez que a janela do MS-DOS estava com limite de linhas. Para a minha surpresa(como simples usuária do MS-DOS), isso não funcionou.
$ meucomando > file.txt
A linha acima apenas direcionou a saída para o arquivo. Já a pilha de erro foi impressa na própria janela do MS-DOS. Após algumas buscas no Google, descobri algo que é novo para mim. O MS-DOS possui saídas “diferentes” para saída e saída de erro. Eu precisaria especificar o redirecionamento de ambas as saídas para o meu arquivo. Ficaria algo assim:
$ meucomando > file.txt 2>&1
Onde:
- meucomando: é o comando que estou executando;
- file.txt : é o arquivo para o qual quero direcionar minha saída;
- 2: é a saída de erro(stderr) do MS-DOS;
- 1: é a saída padrão(stdout) do MS-DOS;
No comando acima, estamos duplicando a saída de erro(2) na saída padrão com a expressão 2>&1. Assim, teremos ambas as saídas no arquivo file.txt. Bem mais fácil se usarmos o SO Linux não?
O Linux é do mesmo jeito, também tem stdout e stderr. Aliás, para ter um gostinho do Linux no Windows, instale o cygwin e seja feliz!
Excelente post! Eu procurava uma forma de enviar a pilha de erro ao log também… obrigado
Bom dia! Gostaria de saber se é possível gravar este erro nos arquivos e vê-lo também no ms-dos, pois testando aqui verifiquei que os erros não são mais listados no ms-dos, apenas nos arquivos. Obrigado.
Dica salvadora. Depois de alguns anos sem me aventurar com “DOS”, resolvi automatizar um processo de atualização de bancos de dados e não estava conseguido logar os resultados e erros. Valeu!