3

たとえば、バッチファイルで、次のコマンドを入力しました。

xcopy C:\ fileA.txt D:\ Dir \ / y / d

fileA.txtというファイルがない場合は、絶対に失敗します。しかし、失敗したかどうかを知りたいので、ユーザーにいくつかのメッセージを出力します。これどうやってするの?

どんな助けでも感謝するでしょう、ありがとう!

4

4 に答える 4

11

ほとんどのコマンド/プログラムは、成功すると0を返し、エラーを通知するためにerrorlevelと呼ばれる他の値を返します。

たとえば、バッチでこれを確認できます。

if not errorlevel 0 goto ERR

xcopyエラーレベル:

0-すべてのファイルがエラーなしでコピーされました

1-コピーするファイルが見つかりませんでした(無効なソース)

2-コピーが完了する前にXCOPYがCtrl-Cで終了しました

4-初期化エラーが発生しました。

5-ディスク書き込みエラーが発生しました。

[1] http://m.computing.net/answers/dos/xcopy-errorlevels/7510.html

于 2013-01-18T06:57:31.217 に答える
3

あなたが興味を持っているのは「エラーレベル」だと思います。http://www.robvanderwoude.com/errorlevel.phpを参照してください。基本的に、バッチファイルでは、次のように言うことでコマンドのステータスコード(UnixまたはLinuxと同様)を確認できます。

IF ERRORLEVEL 1 <do something>
IF ERRORLEVEL 2 <do something>

ここで、1と2は、最後に実行されたプログラムによって返されるステータスコードの可能な値です。次のようなこともできます

echo %ERRORLEVEL%

ステータスコードを出力しますが、常に「通常の」環境変数のように動作するとは限らないことに注意してください。違いの1つは、「set」コマンドでは表示されないことです。

于 2013-01-18T06:52:54.487 に答える
2

受け入れられた答えが機能しなかったことがわかりましたが、これは機能しました:

if %ERRORLEVEL% neq 0 goto ERR
于 2014-05-30T11:58:21.423 に答える
0

次の構造を使用するだけです。

command > nul 2> nul && (
    echo Success
    REM can be multi line
) || (
    echo Error
    REM can be multi line
)
于 2020-12-22T10:10:33.820 に答える