Speichern Sie die Batch-Skriptausgabe in einer Textdatei, ohne zuvor den Speicherort der Batchdatei anzugeben

11

Ich bin mir bewusst, dass ich die Ausgabe auf diese Weise erhalten kann (um sowohl Standard als auch Fehler zu erfassen):

[batchFilePath] > [logFilePath] 2>&1

Oder so für die Standardausgabe:

C:\MyBatchFile.bat > output.txt

Aber gibt es eine Möglichkeit, dies zu tun, ohne den Speicherort der Batchdatei selbst anzugeben?

Nehmen wir zum Beispiel an, ich führe C: \ MyFolder \ MyBatch.cmd aus (zum Ausführen nur einen Doppelklick) und nachdem ich die Batch-Datei beendet habe (oder sie abgeschlossen ist), kann ich die Ausgabe in C: \ MyFolder \ MyBatch.txt finden

Wenn ja, welchen Code müsste ich in die Batch-Datei selbst aufnehmen?

TMRW
quelle

Antworten:

6

Die einzige Lösung, die ich mir >> output.txtvorstellen kann, ist das Hinzufügen am Ende jedes Befehls, der etwas von Ihrer Batchdatei ausgibt. Die Ausgabe Ihrer Datei wird am Ende von hinzugefügtoutput.txt

Oder erstellen Sie eine zweite Batch-Datei, deren Inhalt wäre .\MyBatchFile.bat > output.txt.

Levans
quelle
12

Schließen Sie Ihre Befehle in runde Klammern ein. MyBatchFile.bat::

@echo off
REM setlocal enabledelayedexpansion

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

Variablen in den Klammern werden auf einmal ausgewertet, wenn sie (auftreten. Verwenden Sie enabledelayedexpansiondiese Option , um die Auswertung zu verzögern.

Vlastimil Ovčáčík
quelle
1
Vielen Dank, ersparte mir den Aufwand, einen Wrapper erstellen zu müssen
AdrianBR