Поскольку вопрос задавался в Форуме Delphi, приведу вариант решения этой проблемы в виде маленького консольного приложения на Delphi:
program Sum; {$APPTYPE CONSOLE}
uses
Classes,Windows;
var
s : string;
fi : TMemoryStream;
fo : TFileStream;
begin
if ParamCount <> 1 then Exit;
fo := TFileStream.Create(ParamStr(1),fmCreate);
fi := TMemoryStream.Create;
while not eof do begin
ReadLn(s);
OemToChar(PChar(s),PChar(s));
fi.LoadFromFile(s);
fo.CopyFrom(fi,0);
end;
fi.Free;
fo.Free
end.
Работает оно как системный фильтр, типа таких системных команд, как sort, find - с большими списками файлов, полученными, например, по команде dir:
dir *.txt/b > list
тогда запуск из командной строки выглядит так:
sum res < list
или:
type list | sum result
или сразу все вместе:
dir *.txt/b|sum res - все текстовые файлы в текущей директории слить в один файл - res
dir *.txt/b|sort|sum res - то же, но список предварительно на конвейере отсортировать по именам файлов
dir c:\*.txt/b/s|sort|sum res - то же но файлы собрать со всего диска C:\