Despejar a saída do script em lote em um arquivo de texto sem especificar previamente o local do arquivo em lote

11

Estou ciente de que posso obter a saída desta maneira (para capturar tanto o padrão quanto os erros):

[batchFilePath] > [logFilePath] 2>&1

Ou desta maneira para saída padrão:

C:\MyBatchFile.bat > output.txt

Mas existe uma maneira de fazer isso sem especificar o local do próprio arquivo em lotes?

Por exemplo, vamos supor que eu execute (apenas clique duas vezes para executar) C: \ MyFolder \ MyBatch.cmd e depois de sair do arquivo em lotes (ou ele é concluído), posso encontrar a saída em C: \ MyFolder \ MyBatch.txt

Em caso afirmativo, qual código eu precisaria incluir no próprio arquivo em lotes?

TMRW
fonte

Respostas:

6

A única solução em que consigo pensar é adicionar >> output.txtno final de cada comando a saída de algo do seu arquivo em lotes. Ele adicionará a saída do seu arquivo no final deoutput.txt

Ou criando um segundo arquivo em lote, qual seria o conteúdo .\MyBatchFile.bat > output.txt.

Levans
fonte
12

Coloque seus comandos entre colchetes. MyBatchFile.bat:

@echo off
REM setlocal enabledelayedexpansion

(
  echo line one
  echo line two
  echo line three
) > "%~dpn0.txt"

As variáveis ​​dentro dos colchetes são avaliadas de uma só vez quando (são encontradas. Use enabledelayedexpansionpara atrasar a avaliação.

Vlastimil Ovčáčík
fonte
11
obrigado, me salvou o aborrecimento de ter de criar um wrapper
AdrianBR