次のコマンドを見てください: なぜ a の値が の直後に使用できないの&
ですか?
C:\>set a=
C:\>set a=3&echo %a%
%a%
C:\>echo %a%
3
C:\>set a=3&echo %a%
3
しかし、私がするとき
C:\>set a=
C:\>set a=3&set
a=3 はリストされた変数に含まれています!
ここで学んだトリックのためにこれが必要です。出力がパイプされてもコマンドの終了コードを取得するには: Windows コマンド インタープリター: 最初のパイプされたコマンドの終了コードを取得する方法ですが 、make スクリプトで使用する必要があるため、すべてが1 行である必要があります。これは私がやろうとしていることです:
target:
($(command) & call echo %%^^errorlevel%% ^>$(exitcodefile)) 2>&1 | tee $(logfile) & set /p errorlevel_make=<$(exitcodefile) & exit /B %errorlevel_make%
ただし、errorlevel_make は常に空です (終了コードを含むファイルが存在し、正しい終了コードが含まれています)。
これはcmdのバグですか?私にできることはありますか?