web-dev-qa-db-ja.com

Windowsコマンドラインで標準入力をファイルにリダイレクトするにはどうすればよいですか?

Unixでは、次のようにします。

cat > file.txt

Windowsコマンドプロンプトまたはバッチファイルでこれを行うにはどうすればよいですか?

EDIT:基本的に、引数のないcatの機能を探しています(stdinから読み取り、stdoutに吐き出します)。

13
Matt

TYPE CON

CONは、コンソール入力用のMS-DOSデバイスです。次のようにファイルにリダイレクトできます。

TYPE CON>output.txt

終了するには、 CtrlC または CtrlZ、 Enter ((CtrlZ = EOF)。

22
Mark K Cowan

Stdinを読み取り、読み取ったものをstdoutに書き込むだけの場合は、使用方法によってはFINDSTRが機能する場合があります。

FINDSTRは、入力が引数リストの最後に単一のファイル名として指定されている限り、入力の正確なバイナリイメージを出力します。

findstr "^" file.txt

入力の内容によっては、パイプまたはリダイレクトも機能する場合があります。

findstr "^" < file.txt
or
type file.txt | findstr "^"

FINDSTRでリダイレクトまたはパイプされた入力を使用しているときに次のいずれかが発生すると、出力が破損します。

  • 8191バイトを超える入力行
  • 入力の最後の行は\ nで終了しません。 (入力をリダイレクトするとコマンドがハングする場合があります)

複数の入力ファイルが指定されている場合、FINDSTRは機能しません。その場合、ファイルの名前が出力の各行のプレフィックスとして使用されるためです。

FINDSTRは、stdinと名前付きファイルの両方から読み取ることができないという点でもcatとは異なります。

詳細については、 Windows FINDSTRコマンドの文書化されていない機能と制限は何ですか? を参照してください。

9
dbenham

おもう more.exeあなたが探しているものかもしれません。

コンソールから両方の入力を受け取ることができます。

more > file1.txt

または、別のファイルからパイプインします。TYPE CONしませんハンドル:

type file1.txt | more > file2.txt

moreはファイルに改行を追加してタブを展開するようですので、バイナリデータには使用しないでください!)

6
Carl Walsh

標準入力:

バッチファイル:

:: set /p MyVar=   Prompts user for stdin information

set /p MyVar=

echo %MyVar% > filename
0
JMC