- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コマンドプロンプトのcallと遅延展開)
コマンドプロンプトのcallと遅延展開
このQ&Aのポイント
- コマンドプロンプトのcallと遅延展開について疑問があります。
- バッチスクリプトでcallと遅延展開を使用すると、一部の出力がなくなる現象が発生します。
- callはコマンドラインを2度解析するため、変数の展開が正常に行われないことがあります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
理由はよくわからないのですが、call 引数に""に囲まれない | とその後に何かあるとcall命令が実行されないようです。 call echo 2:!aaa! は、call実行の時点では、 call echo 2:XXX|cat となるので、callの第2引数は「2:XXX|cat」で、前述のようにこの行全体が無視されてしまいます。これは、遅延展開とか関係なく、下記でも確認できます。 SUBが表示されないだけでなく、FILE も出来ませんので表示が闇に消えているだけじゃ無くてcall先に飛んでないようです。 call :sub ^| more echo END goto :EOF :sub echo SUB echo TEST > FILE もちろん、| をエスケープせずに call :sub | more だとcallの結果をパイプしますが。 ところで、やりたいことは何ですかね?