- ベストアンサー
タスクスケジューラからのバッチ起動で動作せず困っています
- タスクスケジューラからのバッチ起動で動作しない現象が発生しています。GUIからの起動では問題ありませんが、タスクスケジューラからの起動時に停止してしまいます。
- 原因としてはタスクスケジューラからのネットワークドライブの認識ができないためと推測されます。
- 解決策としては、ネットワークドライブの認識用の環境情報を読み込む方法や、異なる方法でのバッチ起動を検討することがあります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
実行ファイルの内容が書かれていないので的確な回答ができませんが、 書かれている内容からの参考意見を記します。 > ・*.vbsからD:にある*.batを起動(WScript.Run) なぜVBSからコールしなければならないのか。 その前提を排することはできないか。 > ・*.vbs内の*.batコール箇所をコメントして実行で動作は最後まで終了 > ・*.bat単体で動作させても問題なく終了 この2点からは、VBSでbatをコールする仕方を間違えているか、仕方が合っていても呼び出せない何らかの原因があるか、呼び出せて処理を継続するための前提が備わっていないと推察。 止まっている状態に至るまでのデバッグやメッセージを出せないか、どこで止まっているかの情報がわかれば対処案はあるかも。 > ・タスクスケジューラからネットワークドライブが認識できない? UNCがネックとなっていると思うならば、batから net useで事前接続しておいて、ドライブ自身に指示をかければよい > ・*.vbsで実施するWScript.Runの実行者がsystemで、 > ネットワークドライブの認識用の環境情報(unixでいうcshrcみたいなもの)を > 読み込まないで動作する? ちょっと良く分からないが、 ネットワークドライブ接続時のユーザがローカルシステムアカウントだと言っていますか?もしそうなら、それでネットワークドライブが繋がらず、相手先ドライブが見えずにbatやVBSが応答街またはエラー終了となっていることはあり得るかもしれませんね?(推測だらけですが) ネットワークドライブが接続できていないことが直接原因だと考えるなら、VBSでも、batでも、ネットワークドライブを接続できるように組んでおく必要があるでしょうね。VBSでもコマンドプロンプトでも、ネットワークドライブ接続時に使用するユーザとパスワードを指定できるはずです。
お礼
コメントありがとうございました
補足
>なぜVBSからコールしなければならないのか。 ⇒前提がもれていましたが、*.batが既存で手動で実施していたもの 今回これを移設で自動起動とする要望がありました >止まっている状態に至るまでのデバッグやメッセージを出せないか、どこで止まっているかの情報がわかれば対処案はあるかも。 ⇒*.bat起動時にすぐログ出力を実施しているが出力されていないことで 「動作していない」と判断しております >UNCがネックとなっていると思うならば、batから >net useで事前接続しておいて、ドライブ自身に指示をかければよい ⇒net useで試してみましたが、すでに接続されているものについて接続を 試みるとエラーになるようで、「切断してから接続する」という動作も 考えたのですが他動作への影響が大きいので採用しませんでした >VBSでもコマンドプロンプトでも、ネットワークドライブ接続時に使用するユーザとパスワードを指定できるはずです。 ⇒試したのが、サーバ側にadmin権限ユーザを作成、同じ情報をネットワーク ドライブ(どうやらLinuxベースらしい)に設定しましたが動作は変わらず workgroup/domainを設定する案も考えましたが試していません 解決していないのですが、タスクスケジューラでの実現が難しいと判断して、今のところタイマーアプリを作成して起動するようにしています