Задать вопрос
@SmeliyR

Как копию вывода BAT файла отправлять в файл?

У меня есть разные BAT файлы с множеством команд внутри (как правило это команды вызова утилиты yt-dlp но есть и разные другие команды встречаются в BAT файлах).

Как консольный вывод запуска этих BAT видеть не только на экране, но и отправлять его копию в файл?

Хочется по концу работы BAT файла (допустим он может час работать) смотреть в консольном выводе всякие интересующие меня сообщения (например, об ошибках, которые вызываемые из BAT файла команды выдавали на экран и т.п.).

Есть ли способ?
  • Вопрос задан
  • 112 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 4
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
0. Забыть про bat.
1. Tee-Object (или его алиас tee) в Powershell.
Ответ написан
Комментировать
@elderl
same.bat > log
Ответ написан
@rPman
Тебе нужна утилита tee из мира linux
anthropic claude haiku
// Save this as a .js file, e.g. "tee.js"

// Get the command-line arguments
var args = WScript.Arguments;

// Check if a file argument was provided
if (args.length < 1) {
    WScript.Echo("Usage: cscript tee.js <output_file>");
    WScript.Quit(1);
}

// Get the output file name from the arguments
var outputFile = args(0);

// Create a file object to write to the output file
var fso = new ActiveXObject("Scripting.FileSystemObject");
var file = fso.OpenTextFile(outputFile, 2, true); // 2 = ForWriting, true = Create if not exists

// Read from stdin and write to both stdout and the output file
while (!WScript.StdIn.AtEndOfStream) {
    var line = WScript.StdIn.ReadLine();
    WScript.Echo(line);
    file.WriteLine(line);
}

// Close the output file
file.Close();
Но лучше писать утилита, обрабатывающую вывод каждого запуска yt-dlp и откладывающую в лог только важную информацию, типа файл загружен или нет
Ответ написан
Комментировать
@yellowmew
Cloud infrastructure, monitoring engineer. SRE
Собственно https://github.com/yt-dlp/yt-dlp/issues/2106
вы ж не один такой )
Для винды запуск ваших bat файлов будет в виде
powershell.exe "& .\test.bat | tee test.log -append"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы