• ベストアンサー

vbsでのコマンド実行について

お世話になります。 現在、vbs内でRunメソッドとExecメソッドを使用してコマンドを実行しています。 一応、自分の求めている処理はできたんですが・・・ 戻り値を取得する為にExecメソッドでコマンドを実行する記述があるのですがコマンドプロンプトが表示してすぐに消えてとぱかぱかしてしまっています。 そこで皆さんに質問があり、投稿しました。 コマンドをExecメソッドで実行している所をRunメソッドで実行するように変更してみましたがうまくいきませんでした。 ※変更したのはコマンドの最後に「> 20161111.txt」を追加してテキストファイルに出力させるようにコマンドを変更しました。一応、コマンドプロンプトで直接、コマンドを実行したら問題なく戻り値が「20161111.txt」内に出力されるのを確認しました。 objShell.Run ”C:\ ~.exe ・・・ 20161111.txt”, 0, True 説明が下手でうまく伝える事ができたのかが心配ですがどうか私にご教授いただけませんでしょうか。 何卒、宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>コマンドプロンプトが表示してすぐに消えてとぱかぱかしてしまっています。 Execメソッドは「ウィンドウの表示方法」は指定できないので、実行されるコマンドプロンプトを非表示にする事は出来ません。 >戻り値を取得する為にExecメソッドでコマンドを実行する記述があるのですが Runメソッドも「第3パラメータにTrueを指定した場合のみ、戻り値を取得可能」です。 Set objShell = WScript.CreateObject("WScript.Shell") result = objShell.Run("cmd /c ""C:\ ~.exe ・・・ > 20161111.txt""", 0, True) とやれば、ウィンドウを出さずにexeを起動し、exeの実行が終わるまで待って、実行終了後にresultに戻り値(実行したプログラムの終了コード)が返ります。 上記では「リダイレクトを有効にするため」に、cmd.exeを/C付きで実行しています。

Nanchatte_PG
質問者

お礼

返答が遅くなって申し訳ありません。 参考にしてみましたが、変数に私が求めているような戻り値を取得する事ができませんでしたがただ、最後に追加したテキストの記述のファイルに私が求める値が出力されていたのでこのファイルを開いて内容を取得して判定するようにしました。 でも参考になりました、本当にありがとうございました。 では失礼します。

関連するQ&A