A maneira simples e ingênua que é lenta porque abre e posiciona o ponteiro do arquivo para o fim do arquivo várias vezes.
@echo off
command1 >output.txt
command2 >>output.txt
...
commandN >>output.txt
Uma maneira melhor - mais fácil de escrever e mais rápida porque o arquivo é aberto e posicionado apenas uma vez.
@echo off
>output.txt (
command1
command2
...
commandN
)
Outra maneira boa e rápida que só abre e posiciona o arquivo uma vez
@echo off
call :sub >output.txt
exit /b
:sub
command1
command2
...
commandN
Editar 2017-04-2020
De vez em quando, você pode querer gravar repetidamente em dois ou mais arquivos. Você também pode querer mensagens diferentes na tela. Ainda é possível fazer isso de forma eficiente redirecionando para identificadores indefinidos fora de um bloco ou sub-rotina entre parênteses e, em seguida, usar a &
notação para referenciar os arquivos já abertos.
call :sub 9>File1.txt 8>File2.txt
exit /b
:sub
echo Screen message 1
>&9 File 1 message 1
>&8 File 2 message 1
echo Screen message 2
>&9 File 1 message 2
>&8 File 2 message 2
exit /b
Eu escolhi usar as alças 9 e 8 na ordem reversa porque dessa forma é mais provável que evite o redirecionamento permanente potencial devido a uma falha de design de implementação de redirecionamento da Microsoft ao executar vários redirecionamentos no mesmo comando. É altamente improvável, mas mesmo essa abordagem pode expor o bug se você tentar o suficiente. Se você realizar o redirecionamento, terá a garantia de evitar o problema.
3>File1.txt ( 4>File2.txt call :sub)
exit /b
:sub
etc.
%~f0
sempre fornece o caminho completo para o script em lote, mesmo quando dentro de uma sub-rotina CALLed :.>output.txt 2>&1
cmd /?
ou ahelp cmd
partir da linha de comando do console para documentação. O truque do terceiro método é que o redirecionamento no CALL se aplica a todos os comandos dentro da sub-rotina CALLed.se você deseja que os fluxos de saída e de erro sejam redirecionados
fonte
>>
irá anexar aa.txt
. Ema.txt
vez disso, para substituir , use>
. stackoverflow.com/q/4458231/1098302Eu sei que esta é uma postagem mais antiga, mas alguém vai topar com ela em uma pesquisa no Google e também parece que algumas perguntas que o OP fez nos comentários não foram abordadas especificamente. Além disso, vá com calma, pois esta é minha primeira resposta postada no SO. :)
Para redirecionar a saída para um arquivo usando um nome de arquivo gerado dinamicamente, minha abordagem go-to (leia-se: rápido e sujo) é a segunda solução oferecida por @dbenham. Então, por exemplo, este:
Irá criar um arquivo como o que você vê nesta imagem do arquivo no diretório de destino
Isso conterá esta saída:
Lembre-se também de que essa solução depende da localidade, portanto, tome cuidado como / quando usá-la.
fonte
ou
deve preencher a conta.
Se você quiser
APPEND
a saída, use em>>
vez de>
.>
irá iniciar um novo arquivo de log.fonte
fonte
Há um pequeno programa legal que você pode usar para redirecionar a saída para um arquivo e o console
Exibir trecho de código
fonte
Usei o comando acima no meu arquivo em lote e funcionou. No arquivo de log, mostra os resultados do meu comando.
fonte
Adicione estas duas linhas perto do topo do seu arquivo em lote, todos os stdout e stderr depois serão redirecionados para log.txt:
fonte
Isso pode falhar no caso de caracteres "tóxicos" na entrada. Considerar uma entrada como thisIsAnIn ^^^^ put é uma boa maneira de entender o que está acontecendo. Claro que existe uma regra que determina que uma string de entrada DEVE estar entre aspas duplas, mas tenho a sensação de que essa regra é válida apenas se o significado da entrada for um local em uma partição NTFS (talvez seja uma regra para URLs I não tenho a certeza). Mas não é uma regra para uma string de entrada arbitrária, é claro (é uma "boa prática", mas você não pode contar com ela).
fonte
Adicionar as seguintes linhas na parte inferior de seu arquivo em lote pegará tudo exatamente como exibido na janela CMD e exportará para um arquivo de texto:
Basicamente, ele seleciona tudo -> copiar para a área de transferência -> colar no arquivo de texto .
fonte