fastapple's blog

時系列関係なく、情報を追記・分割・統合などします。ブログに記載の内容のうち、引用ではなく、私自身が記載している文章・コードなどについては、自由にご利用ください。

powershellで標準入力(ファイルリダイレクト)


たまにpowershellで標準入力を扱う方法を忘れて調べる羽目になる。

例えばa.exeがあるとして、a.exeに標準入力でinput.txtの内容を渡したい場合、コマンドラインだと単に以下のようにすればいい。

a.exe < input.txt

powershellの場合、以下のようになる。

cat input.txt | .\a.exe

なんか急に長くなる。気をつけるべきところがいくつか。
・catして標準出力に出したものを、パイプ | で渡す必要がある。( > だと単にファイルの内容が上書きされてしまう。)
・a.exeなど、実行ファイルを指定する場合は、.\をつけて、カレントにあるファイルだと明示する必要がある。

なお、powershellでパイプで渡されるのはオブジェクトなので、input.txtが大きい場合には注意が必要。

以下が詳しい。
PowerShell で 外部コマンドをパイプで渡す時の問題について - tech.guitarrapc.cóm

おわり。