Zrzuć dane wyjściowe skryptu wsadowego do pliku tekstowego bez wcześniejszego określenia położenia pliku wsadowego

11

Jestem świadomy, że mogę uzyskać wynik w ten sposób (w celu przechwycenia zarówno błędów standardowych, jak i błędów):

[batchFilePath] > [logFilePath] 2>&1

Lub w ten sposób dla standardowego wyjścia:

C:\MyBatchFile.bat > output.txt

Ale czy można to zrobić bez określania lokalizacji samego pliku wsadowego?

Załóżmy na przykład, że uruchomię (wystarczy kliknąć dwukrotnie, aby wykonać) C: \ MyFolder \ MyBatch.cmd, a po zamknięciu pliku wsadowego (lub jego zakończeniu) mogę znaleźć dane wyjściowe w C: \ MyFolder \ MyBatch.txt

Jeśli tak, jaki kod powinienem zawrzeć w samym pliku wsadowym?

TMRW
źródło

Odpowiedzi:

6

Jedyne rozwiązanie, jakie mogę wymyślić, to dodanie >> output.txtna końcu każdego polecenia wypisującego coś z pliku wsadowego. Dodaje dane wyjściowe pliku na końcuoutput.txt

Lub utworzenie drugiego pliku wsadowego, którym byłaby treść .\MyBatchFile.bat > output.txt.

Levans
źródło
12

Umieść swoje polecenia w nawiasach okrągłych. MyBatchFile.bat:

@echo off
REM setlocal enabledelayedexpansion

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

Zmienne w nawiasach są oceniane naraz, gdy (zostaną napotkane. Służy enabledelayedexpansiondo opóźniania oceny.

Vlastimil Ovčáčík
źródło
1
dziękuję, uratowałeś mnie od konieczności tworzenia opakowania
AdrianBR