2012-03-09 17 views
1

私はDOSで働いたことがありません。なぜなら、より強力なシェルスクリプトがUNIXにあったからです。初めて私はWindowsで作業していて、DOS/Batchスクリプトについてよく知らない。このエラーレベルはどのように設定されていますか?

リモートマシンを再起動するための小さなスクリプトを作成しようとしていました。 スクリプトを洗練させながら、最後に実行したコマンドの戻りコードの一種である環境var%ERRORLEVEL%について学習しました。

コマンドが実行されたが望みの結果やエラーmsgが生成されない場合、エラーコードはゼロではありません。 リモートシャットダウンを試みていて、ネットワークに存在しないホストを提供しています。 「ネットワークパスが見つかりませんでしたが、%ERRORLEVEL%はまだゼロです」と表示されます。これは、この質問をすること全体のポイントです。

ゼロが成功したコマンドを実行するように指定されているため、%ERRORLEVEL%以外のものをキャプチャする必要がありますか?「ネットワークパスが見つかりません」をスローするときに%ERRORLEVEL%を変更していません。

shutdown command I am using: 

shutdown -r -f -t %DELAYOF% -m \\%COMPNAME% -c %COMMENT% 

私は、無効な値は%COMPNAME%以下に与える与えた場合、それはプロンプトが「ネットワークパスが見つかりません」しかし%のEERORLEVEL%は変更されていないと言います。

+0

ERRORLEVELをテストする前に実行しているコマンドは何ですか? – hometoast

+0

どのバージョンのWindowsですか? –

+0

ERRORLEVELという名前の環境変数が割り当てられていないことを再確認します(%ERRORLEVEL%が機能しない場合)。引数を指定しないでSETコマンドを実行すると、現在の環境変数がすべて表示されます。 –

答えて

1

エラーレベルは%compname%は環境変数ではありませんが、%computername%はエラーです。

これを試してみてください(テストしていない)

shutdown -r -f -t %DELAYOF% -m \\%COMPUTERNAME% -c %COMMENT% 

これはあなたが探しているものではない場合、我々は、それを少なくとも部分を見てみることができるように、あなたのスクリプトを投稿してくださいすることができますこのスニペットに関連しています。

% ERRORLEVEL%あなたはどこか別の場所からそれを捕捉しないように、あなたのERRORLEVELの空白を維持するあなたのコマンド

verify >nul 
shutdown -r -f -t %DELAYOF% -m \\%COMPNAME% -c %COMMENT% 
echo.%ERRORLEVEL%>yourfile.txt 

verify >nulの前にこれを入れてみてください。

0

ネット名が見つからない場合は、ERRORLEVEL = 53を返す必要があります。少なくともWin7のテストでは問題ありません。

エラーレベルのテストが、シャットダウンコマンドのの直後にあることを確認してください。

関連する問題