2

とにかく拡張を遅らせることなく以下を行うことはありますか(1行、読みやすさのために壊れています)?

%comspec% /v:on /c %windir%\System32\reg.exe import c:\temp\test.reg &
 if !errorlevel! neq 0 pause

エコーの場合はcall使用できることはわかっていますが、で使用できるようには見えませんif

4

2 に答える 2

4

条件付き実行を使用できます。 reg.exe import c:\temp\test.reg || pause
||これは、失敗時に実行することを意味します(つまり、エラーレベルneq 0)。

この例を試して、どのように機能するかを確認することもできます。

find "this" && echo found || echo not found-「this」が入力ストリームにあったかどうかを通知します(リダイレクトしない限り、キーボードから入力します)。

于 2013-01-19T23:06:39.423 に答える
2

1つの方法は、この古い構文を使用することです。

%comspec% ... & if errorlevel 1 pause

この場合、ifステートメントの特別なバリアントが使用され、現在のエラーレベルの状態をテストします。

別のオプションはこれかもしれません:

%comspec% ... || pause

||コマンド区切り文字は、とほぼ同等です。& if !errorlevel! neq 0つまり、後続のコマンドは、前のコマンドがゼロ以外の終了コードで終了した場合にのみ実行されます。

于 2013-01-19T23:05:58.210 に答える