とにかく拡張を遅らせることなく以下を行うことはありますか(1行、読みやすさのために壊れています)?
%comspec% /v:on /c %windir%\System32\reg.exe import c:\temp\test.reg &
if !errorlevel! neq 0 pause
エコーの場合はcall
使用できることはわかっていますが、で使用できるようには見えませんif
。
とにかく拡張を遅らせることなく以下を行うことはありますか(1行、読みやすさのために壊れています)?
%comspec% /v:on /c %windir%\System32\reg.exe import c:\temp\test.reg &
if !errorlevel! neq 0 pause
エコーの場合はcall
使用できることはわかっていますが、で使用できるようには見えませんif
。
条件付き実行を使用できます。
reg.exe import c:\temp\test.reg || pause
||
これは、失敗時に実行することを意味します(つまり、エラーレベルneq 0)。
この例を試して、どのように機能するかを確認することもできます。
find "this" && echo found || echo not found
-「this」が入力ストリームにあったかどうかを通知します(リダイレクトしない限り、キーボードから入力します)。
1つの方法は、この古い構文を使用することです。
%comspec% ... & if errorlevel 1 pause
この場合、if
ステートメントの特別なバリアントが使用され、現在のエラーレベルの状態をテストします。
別のオプションはこれかもしれません:
%comspec% ... || pause
||
コマンド区切り文字は、とほぼ同等です。& if !errorlevel! neq 0
つまり、後続のコマンドは、前のコマンドがゼロ以外の終了コードで終了した場合にのみ実行されます。