Volcar la salida del script por lotes en un archivo de texto sin especificar de antemano la ubicación del archivo por lotes

11

Soy consciente de que puedo obtener el resultado de esta manera (para capturar tanto el estándar como los errores):

[batchFilePath] > [logFilePath] 2>&1

O de esta manera para salida estándar:

C:\MyBatchFile.bat > output.txt

Pero, ¿hay alguna manera de hacer esto sin especificar la ubicación del archivo por lotes?

Por ejemplo, supongamos que ejecuto (solo haga doble clic para ejecutar) C: \ MyFolder \ MyBatch.cmd y después de salir del archivo por lotes (o se completa) puedo encontrar la salida en C: \ MyFolder \ MyBatch.txt

Si es así, ¿qué código debería incluir en el archivo por lotes?

TMRW
fuente

Respuestas:

6

La única solución que se me ocurre es agregar >> output.txtal final de cada comando la salida de algo de su archivo por lotes. Agregará la salida de su archivo al final deoutput.txt

O creando un segundo archivo por lotes cuyo contenido sería .\MyBatchFile.bat > output.txt.

Levans
fuente
12

Encierre sus comandos entre corchetes. MyBatchFile.bat:

@echo off
REM setlocal enabledelayedexpansion

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

Las variables dentro de los corchetes se evalúan todas a la vez cuando (se encuentran. Use enabledelayedexpansionpara retrasar la evaluación.

Vlastimil Ovčáčík
fuente
1
gracias, me ahorró la molestia de tener que crear un contenedor
AdrianBR