2016-11-24 4 views
3

私は以下のコードを書こうとしていますが、終了する前にエラーを表示したいのですが、実行するたびにすぐに終了します。if文の中でしばらくの間、バッチファイルをスリープ状態にする方法はありますか?

私も試してみましたtimeout /t 5は動作していません。

+1

お使いのOSは? – Hackoo

+1

If ErrorLevel 1またはIf%ErrorLevel%== 1のいずれかを使用してください。 – Compo

+0

私はWindows上にいます。 –

答えて

3

これは動作するはずです:

@echo off 
cd "haha" 2>nul 
if %errorlevel%==1 (
    echo Failure reason given is %errorlevel% 
    timeout /t 5 
    exit /b %errorlevel% 
) 
+1

ああああああ... 28秒... – geisterfurz007

+0

これは完璧に働いて、ありがとう!もう1つ、エラーをどのように印刷できますか?私はそれは明らかにディレクトリが存在しないことを意味し、とにかくそれが終了した理由についてのエラーを印刷するにはありますか?どうもありがとう! –

+0

'2>ヌル'を削除して質問に答えを入れてください – SachaDee

3

正しい構文は同じことを意味しているif errorlevel is 1 or greater

OR

if %errorlevel% geq 1 (

を意味

if errorlevel 1 (

です。

現状では、cmdはあなたが(errorlevelが1であると仮定)

if 1 1 (

ようなコードを解釈されます。これは構文エラーです。したがって、cmdにメッセージが表示されます。あなたがポイントをクリックしてクソをすることによって走っているなら、ウインドウは閉じます。プロンプトから実行している場合、cmdは構文エラーを報告します。

しかし、プロンプトからexit文を実行すると、cmdインスタンスが強制終了されることに注意してください。別の理由がない限り、goto :eofを使用する方が良いでしょう。

timeout /t 5は動作しますが、カウントダウンを生成します。

timeout /t 5 >nulは、単に待機する必要があります。問題は、最初にifの構文を解決しなければならないことです。そうでないとtimeout命令には到達しません。

関連する問題