10

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

[batchFilePath] > [logFilePath] 2>&1

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

C:\MyBatchFile.bat > output.txt

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

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

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

2 ответа2

11

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

@echo off
REM setlocal enabledelayedexpansion

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

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

4

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .