Как дублировать вывод в файл, то есть чтобы и отображалось на экране, и сохранилось в файл. Подходит для выполнения bat файла или одной программы.
В командной строке
for /F "delims=" %i IN ('program.exe') DO @echo %i && @echo %i>>program.out
То же самое в bat файле (пишутся двойные символы процента):
for /F "delims=" %%i IN ('program.exe') DO @echo %%i && @echo %%i>>program.out
Ещё один вариант - через WSH JS скрипт, который также читает stdin построчно, затем выводит каждую строку в stdout и в заданный файл.
var stdin = WScript.StdIn;
var stdout = WScript.StdOut;
var fso = WScript.CreateObject("Scripting.FileSystemObject");
var filename = WScript.Arguments(0);
var file = fso.OpenTextFile(filename,2,true,-1);
while (!stdin.AtEndOfStream)
{
var str = stdin.ReadLine();
stdout.WriteLine(str);
file.WriteLine(str);
}
file.Close();
Строка запуска попроще, чем в первом варианте:
program.exe | cscript duplicate.js program.out