現在、スクリプト エラーが発生すると、WScript はメッセージ ボックスを表示します。これらのスクリプトは他のプロセスによって呼び出され、サーバー上で実行されるため、エラー ボックスを無視する人はいません。
私が望むのは、エラー メッセージが STDOUT にダンプされ、実行によって呼び出し元のプロセスが返されることです。MSGBox としてポップすると、全体がハングします。
アイデア?
現在、スクリプト エラーが発生すると、WScript はメッセージ ボックスを表示します。これらのスクリプトは他のプロセスによって呼び出され、サーバー上で実行されるため、エラー ボックスを無視する人はいません。
私が望むのは、エラー メッセージが STDOUT にダンプされ、実行によって呼び出し元のプロセスが返されることです。MSGBox としてポップすると、全体がハングします。
アイデア?
これは、スクリプト バッチ ジョブを実行する方法です。
cscript //b scriptname.vbs
WScript を使用しないでください。CScript を使用します。Windows コマンド プロンプトで、次のように入力してヘルプを表示します。
cscript //?
次のことをお勧めします。
cscript //H:CScript
これにより、CScript が既定のスクリプト インタープリターになります。CScript は、必要に応じてメッセージをコンソール (つまり、stdout) に出力します。(ダイアログ ウィンドウは使用しません。) //B スイッチを試してみることもできますが、スクリプトごとに実行する必要があるかどうかはわかりません。//H スイッチのように永続的な 1 回限りのスイッチである場合は、これでうまくいく可能性があります。そうでない場合は、すべてのリモート プログラムを変更して、それを含める必要がある場合があります。あなたが提供した情報から、デフォルトのインタープリター(//H)を変更するだけで、あなたが望むことができると思います。
また、スクリプトがエラーで終了しないように、何らかのエラー処理を追加する必要があります。Visual Basic Scripting Edition では、エラーを無視したい場合に最も簡単な方法は、スクリプトの先頭に次の行を追加することです。
On Error Resume Next
詳細については、 http://msdn.microsoft.com/en-us/library/53f3k80h (VS.85).aspx を参照してください。
WScript.Echo
の代わりに使用しMsgBox
ます。また、Cscript
代わりに を使用してスクリプトを実行しますWscript
。
使用している言語については言及していません。VBScript を使用している場合は、On Error...ステートメントを使用してエラー ハンドラーを記述できます。JScript を使用している場合は、try {} catch (x) {}ブロックを使用できます。
スクリプト コードを Sub に配置することをお勧めします。たとえばDoWork
、スクリプトを次のようにコーディングします。
On Error Resume Next
DoWork
If Err.Number <> 0 Then
If "CSCRIPT.EXE" = UCase( Right( WScript.Fullname, 11 ) ) Then
WScript.StdErr.Write Err.Number & ": " & Err.Description
Else
WScript.Echo Err.Number & ": " & Err.Description
End If
WScript.Quit 1
End If
Private Sub DoWork
... your code ...
End Sub
このように、 を使用してスクリプトを実行しcscript //b
、失敗すると、stderr にエラー メッセージが出力され、呼び出し元はゼロ以外のエラー レベルを受け取ります。
これをしないでください:
vbscript: エラー時に次に再開
日本語: 「エラーが発生した場合は、無視して続行してください」.