LotPingsがコメントと回答で述べているように、いつでもコンソールに出力を送ることができます>con
(注、末尾:
は不要です)。
ただし、すべての機能がに向けられcon
たときに正しく機能するわけではありません。たとえばcls
、画面を適切にクリアしません。
別のオプションは、ファイルにリダイレクトする前に元のstdoutのコピーを保存し、保存したハンドルに特別なコマンドを送信することです。
@echo off
9>&1 1>stdout.txt 2>stderr.txt (
echo Most output goes to a file
echo Hello world
>&9 echo But this goes to the original definition of stdout - the console
)
既存のハンドルをリダイレクトするたびに、リダイレクトが実行される前に、元の定義が最初に利用可能な未定義のハンドルに保存されることに注意してください。したがって、事前のリダイレクトがなかったと仮定すると、以下の&3は元のstdout(コンソール)を指すので、9への明示的な保存の必要はありません。
@echo off
1>stdout.txt 2>stderr.txt (
echo Most output goes to a file
echo Hello world
>&3 echo But this normally goes to the original definition of stdout - the console
)
しかし、3がまだ使用されていないことを保証できないため、暗黙の保存に依存するのは好きではありません。そのため、正しい結果が得られない可能性があります。指定した未使用のハンドルに明示的に保存するのが最善です。