シンプルな C# コンソール アプリケーションでこのトリックを実行できます。
using System;
using System.Collections.Generic;
using System.IO;
namespace CopyToFiles
{
class Program
{
static void Main(string[] args)
{
var buffer = new char[100];
var outputs = new List<TextWriter>();
foreach (var file in args)
outputs.Add(new StreamWriter(file));
outputs.Add(Console.Out);
int bytesRead;
do
{
bytesRead = Console.In.ReadBlock(buffer, 0, buffer.Length);
outputs.ForEach(o => o.Write(buffer, 0, bytesRead));
} while (bytesRead == buffer.Length);
outputs.ForEach(o => o.Close());
}
}
}
これを使用するには、ソース コマンドをプログラムにパイプし、出力を複製するファイルのパスを指定するだけです。例えば:
dir | CopyToFiles files1.txt files2.txt
dir の結果を表示し、その結果を files1.txt と files2.txt の両方に保存します。
上記のエラー処理の方法にはあまり (何も!) なく、複数のファイルをサポートする必要がないことに注意してください。