Estou usando um script de linha de comando para ajustar várias configurações em um computador. No entanto, eu gostaria que toda a saída também fosse registrada em um arquivo .txt ou .log.
Quando uso meu conhecimento básico do sistema de log, ele coloca a saída em um arquivo, mas na verdade não é executada. No meu caso, eu precisaria executá-lo e depois entrar em um arquivo para referência posterior.
Alguém seria capaz de me dizer como fazer isso?
Desde já, obrigado! Dempsey
command-line
logging
cmd.exe
Dempsey FoxDie Van Assche
fonte
fonte
Respostas:
Se a pergunta solicitar que um script seja "executado" e o arquivo em lotes inteiro ser enviado para um arquivo de log no Windows 8.1, então aqui está a resposta simples:
Inclua isso no início do seu arquivo em lotes ...
fonte
Na sua pergunta, você menciona:
Como você diz que o programa está sendo executado e sua saída está sendo colocada no arquivo, pensei que você poderia ter significado "exibido" , em vez de "executado" .
Se não foi isso que você quis dizer, provavelmente teria ajudado se isso fosse explicado melhor, talvez com alguma amostra de saída.
De qualquer forma, estou postando esta resposta, caso haja outras pessoas que achem essa pergunta / resposta útil.
Então, basicamente, parece que você deseja que a saída de um script seja capturada em um arquivo e também seja possível ver a saída do script na tela enquanto o script estiver em execução.
(tl; dr version: use wintee , assim:
script 2>&1 | wtee logfile.txt
)Para esta postagem, usarei um pequeno arquivo de lote de teste, mas seu script pode ser tão grande e complicado ou simples quanto necessário:
É o que acontece quando executo esse script em lote:
Observe que no script de teste, a primeira execução do comando "dir" é bem-sucedida e a segunda falha. Eu faço isso apenas para mostrar o que acontecerá com as "mensagens de erro" quando você executar seu script.
Se eu executar o script e usar o redirecionamento ( ">" ) para capturar a saída, verei isso
Observe que a mensagem de erro "Arquivo não encontrado" foi mostrada na tela quando o script foi executado e não foi realmente capturada no arquivo. Isso ocorre porque ">" captura "saída normal" que foi enviada ao fluxo STDOUT. "Mensagens de erro" são normalmente enviadas para o fluxo STDERR.
Para capturar "saída normal" e "mensagens de erro", você também precisa capturar o fluxo STDERR, indicado pelo "2" em "2> & 1" no comando aqui:
No unix, há um comando padrão:
"tee"
Usando o comando "tee", você pode capturar a saída de um programa e também exibir a saída na tela ao mesmo tempo.
O comando "tee" não é padrão no Windows, mas você pode baixar uma versão gratuita do "tee" para windows aqui: wintee . O programa baixado é chamado:
"wtee.exe"
.Você usa o programa "wtee.exe" como mostrado abaixo.
Isso capturará a saída do script para o arquivo nomeado
"log.txt"
como antes e também exibirá a saída na tela enquanto o script estiver em execução:fonte
Este script executará ls e registrará sua saída em um arquivo chamado log.txt:
O log não será executado.
fonte