Scarica l'output dello script batch in un file di testo senza specificare in anticipo la posizione del file batch


11

Sono consapevole che posso ottenere l'output in questo modo (per catturare sia standard che errori):

[batchFilePath] > [logFilePath] 2>&1

O in questo modo per l'output standard:

C:\MyBatchFile.bat > output.txt

Ma c'è un modo per farlo senza specificare la posizione del file batch stesso?

Ad esempio, supponiamo che io corra (basta fare doppio clic per eseguire) C: \ MyFolder \ MyBatch.cmd e dopo aver chiuso il file batch (o completato) posso trovare l'output in C: \ MyFolder \ MyBatch.txt

In tal caso, quale codice dovrei includere nel file batch stesso?

Risposte:


6

L'unica soluzione che mi viene in mente è l'aggiunta >> output.txtalla fine di ogni comando che genera qualcosa del tuo file batch. Aggiungerà l'output del tuo file alla fine dioutput.txt

O creando un secondo file batch quale contenuto sarebbe .\MyBatchFile.bat > output.txt.


12

Racchiudere i comandi tra parentesi tonde. MyBatchFile.bat:

@echo off
REM setlocal enabledelayedexpansion

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

Le variabili all'interno delle parentesi vengono valutate tutte in una volta quando (vengono rilevate. Utilizzare enabledelayedexpansionper ritardare la valutazione.


1
grazie, mi ha salvato la seccatura di dover creare un wrapper
AdrianBR,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.