0
は、このバッチファイル:このパイプコマンドが失敗するのはなぜですか?ファイル%v%の.txtの存在で
PROMPT $g
SET v="d"
FOR %%F IN ("*.txt") DO (TYPE "%%F" )
FOR %%F IN ("*.txt") DO (SORT "%%F" )
FOR %%F IN ("*.txt") DO (TYPE "%%F" | SORT)
が
>PROMPT $g
>SET v="d"
>FOR %F IN ("*.txt") DO (TYPE "%F" )
>(TYPE "%v%.txt" )
content
>FOR %F IN ("*.txt") DO (SORT "%F" )
>(SORT "%v%.txt" )
content
>FOR %F IN ("*.txt") DO (TYPE "%F" | SORT )
>(TYPE "%v%.txt" | SORT )
The system cannot find the file specified.
>
を生産するのはなぜ唯一の行がパイプされたコマンドを持っていることから、「システムは指定されたファイルを見つけることができませんか」? echo
代わりのtype
を使用して
完全に右。コマンドは、バッチファイル( '%% F - >%v%.txt')を実行している' cmd'インスタンスで最初に解析されます。パイプの各辺は( '%v%.txt - >" d ".txt')を解析してコマンドを実行する別個の' cmd'インスタンスによって処理されます。 –
@MC ND、うわー、それはダムです。どのようにこれまでに動作することが期待された、私は不思議ですか?おかげさまで – ChrisJJ
@ChrisJJでは、パイプはsdtoutを左側の* process *から右側の* process *のstdinに接続します。唯一の解決策ではありませんが、これは初期のUNIXバージョン以降に実装されており、今日のbashのようなシェルの実装方法です。それは動作しますが、時にはあなたを噛むいくつかの癖があります。 –