- ベストアンサー
VBSで特定のエラーが出た場合のみスルーしたい
- VBS実行中、特定のエラー番号が出た場合にエラーメッセージを無視する方法について教えてください。
- 複数のVBSを同時に実行する環境で、特定のエラーコードのみ無視(他のアクションへ分岐させる)する方法を教えてください。
- ファイルを開くアクションでファイルが存在しない場合にはVBSの実行を終了したいです。他の代替案があれば教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>複数のVBSを同時に実行する可能性がある環境な為、 >エラーメッセージ全てを無視させてしまうと運用に問題があります。 On Error Resume Next は、同時実行している他のスクリプトに影響しないよ。もちろん、後から起動されたスクリプトにも影響しない。実行を開始した時点は、全てOn Error Goto 0の状態になる。
その他の回答 (2)
- real beatin(@realbeatin)
- ベストアンサー率82% (174/211)
エラーナンバーによる分岐は、 それはそれで勿論出来るようにしておいた方がいいと思いますが、 VBSの場合は、FSOを使いこなすことの方が大事な気がします。 パスを渡して、ファイルやフォルダの存否確認は出来ますので、 ご質問の課題は、エラーを扱う必要のあるケースでもないように 思うのですが。 エラーコードを丸暗記して使いこなせるレベルともなれば、 敢えてエラーに掛けた方がコーディングが早く済む、 という考えでもいいのかも知れませんが、私の場合は、 用意されているもので判別可能なものと、 そうでないものをエラーで扱うのと、 分けて書く方を優先して、必要な場面では徹底してエラーを扱う みたいな。 > ファイルを開くアクションでファイルが無かった場合に > パスが存在しませんという旨のエラーメッセージが出る場合はその時点でVBSの > 実行自体を終了したいです。 > 代替案あれば教えていただけると幸いです。 例えば、 ' // If objFSO.FileExists(strFileName) Then ' 指定パスのファイルが存在する場合の処理 Else ' 指定パスのファイルが存在しない場合の処理 WScript.Echo "message" WScript.Quit(1) End If ' // とか。
お礼
回答ありがとうございます! >パスを渡して、ファイルやフォルダの存否確認は出来ますので、 >ご質問の課題は、エラーを扱う必要のあるケースでもないように >思うのですが。 まさしくこれがやりたかったのですが、イマイチ分からなかったので、、 OnErrorで無理やり突破するより、 書いて頂いたサンプルの方が、現在の問題を解決するには確かにスマートに 出来そうです! 大変参考になりましたm(__)m
- chie65536(@chie65535)
- ベストアンサー率44% (8741/19839)
On Error Resume Next 'ここでエラーが起きそうな処理をする。 (略) 'もしエラーがあったら If Err.Number <> 0 Then 'エラー番号で処理分けして Select Case Err.Number 'もしFile not foundだったら Case 53 '普通に標準のエラートラップが起きるように設定して On Error Goto 0 '擬似的にエラーを起こして、VBSを例外終了させる Err.Raise 53 '念のためにVBSを終了させるコードを書いておくが、実行されない WScript.Quit 53 End Select '上記で処理しないエラーは無視したいのでエラーをクリアする Err.Clear End If
お礼
回答ありがとうございます! 丁寧に教えていただきとてもありがたいのですが、 「On Error Resume Next」を使うと別のスクリプトにも影響 が出ると思っていたので、エラー全てを無視しないで済む書き方 を探していました。 しかし他の方の回答にあるように、他のスクリプトには影響しないんですね、、、 質問内容の理解と説明が浅く申し訳なかったですが、その旨も補足して頂ければわかったのですが、、 次回エラーの分岐を扱う際はそのままコード使わせていただきます! 大変感謝です!
お礼
回答ありがとうございます! なんと、、! そもそもの認識が間違っていたようですね、、、