Вывести пакетный сценарий в текстовый файл без предварительного указания местоположения пакетного файла

11

Я знаю, что я могу получить вывод таким образом (чтобы захватить как стандартные, так и ошибки):

[batchFilePath] > [logFilePath] 2>&1

Или так для стандартного вывода:

C:\MyBatchFile.bat > output.txt

Но есть ли способ сделать это без указания местоположения самого пакетного файла?

Например, давайте предположим, что я запускаю (просто дважды щелкните для выполнения) C: \ MyFolder \ MyBatch.cmd и после того, как я выйду из пакетного файла (или он завершится), я могу найти вывод в C: \ MyFolder \ MyBatch.txt

Если так, какой код мне нужно включить в сам пакетный файл?

TMRW
источник

Ответы:

6

Единственное решение, которое я могу придумать, - это добавить >> output.txtв конце каждой команды, выводящей что-то из вашего командного файла. Это добавит вывод вашего файла в концеoutput.txt

Или создание второго пакетного файла, содержание которого будет .\MyBatchFile.bat > output.txt.

Леванс
источник
12

Заключите ваши команды в круглые скобки. MyBatchFile.bat:

@echo off
REM setlocal enabledelayedexpansion

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

Переменные внутри скобок оцениваются все сразу, когда (встречаются. Используйте, enabledelayedexpansionчтобы отложить оценку.

Властимил Овчачик
источник
1
спасибо, избавил меня от необходимости создавать обертку
AdrianBR