VBSの質問です

a.vbs
==========================================
dim wsh
Dim objFileSystemObject
Dim strFolderPath
set wsh = CreateObject( "WScript.Shell" )
Set objFileSystemObject = WScript.CreateObject("Scripting.FileSystemObject")
strFolderPath = objFileSystemObject.GetFolder(".").Path
wsh.CurrentDirectory = "C:\Users\Desktop"
wsh.Run "その1.vbs"
wsh.CurrentDirectory = "C:\Users\Desktop"
wsh.Run "その2.vbs"
========================================
その1.vbsで生成したものをその2.vbsで使うa.vbsというプログラムを作りましたが
a.vbsではその1.vbsで生成が終わるまれにその2.vbsが始まってしまいうまいこと処理できません
その1.vbsの処理が終わるまでその2.vbsの処理を止めるようにするにはどのように書いたらいいのでしょ

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/09/03 08:45:59
  • 終了:2013/09/07 14:08:34

ベストアンサー

id:windofjuly No.2

うぃんど回答回数2625ベストアンサー獲得回数11492013/09/03 09:30:27

ポイント75pt

Runメソッドの第三引数でtrueを指示
http://msdn.microsoft.com/ja-jp/library/cc364421.aspx

object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])

引数

object
WshShell オブジェクトです。

strCommand
実行するコマンド ラインを示す文字列値です。この引数には、実行可能ファイルに渡すべきパラメータをすべて含める必要があります。

intWindowStyle
省略可能です。プログラムのウィンドウの外観を示す整数値です。すべてのプログラムがこの情報を使用するわけではないので注意してください。

bWaitOnReturn
省略可能です。スクリプト内の次のステートメントに進まずにプログラムの実行が終了するまでスクリプトを待機させるかどうかを示すブール値です。bWaitOnReturn に TRUE を指定すると、プログラムの実行が終了するまでスクリプトの実行は中断され、Run メソッドはアプリケーションから返される任意のエラー コードを返します。bWaitOnReturn に FALSE を指定すると、プログラムが開始すると Run メソッドは即座に復帰して自動的に 0 を返します (これをエラー コードとして解釈しないでください)。

id:windofjuly

下記のように返り値を受け取って以後の処理を分けるほうがベター

result = wsh.Run "その1.vbs",,true
if result = ほげほげ then いろいろ
2013/09/03 09:42:07

その他の回答(3件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982013/09/03 09:02:39

ポイント75pt

http://blog.livedoor.jp/akf0/archives/51371234.html
http://wsh.style-mods.net/tips/wshtips_2-11.htm
http://wsh.style-mods.net/tips/wshtips_2-05.htm

"その1.vbs"を実行する前に 適当にファイルを作成します。

"その1.vbs"の中では 処理が 終わった時点で、そのファイルを削除します。

呼び出し元では "その1.vbs"を実行後、作成したファイルが存在しなくなるまで ループして待ちます。

これでいかがでしょうか?

それぞれのやり方は、最初に提示したアドレスを参照してみてください。

id:windofjuly No.2

うぃんど回答回数2625ベストアンサー獲得回数11492013/09/03 09:30:27ここでベストアンサー

ポイント75pt

Runメソッドの第三引数でtrueを指示
http://msdn.microsoft.com/ja-jp/library/cc364421.aspx

object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])

引数

object
WshShell オブジェクトです。

strCommand
実行するコマンド ラインを示す文字列値です。この引数には、実行可能ファイルに渡すべきパラメータをすべて含める必要があります。

intWindowStyle
省略可能です。プログラムのウィンドウの外観を示す整数値です。すべてのプログラムがこの情報を使用するわけではないので注意してください。

bWaitOnReturn
省略可能です。スクリプト内の次のステートメントに進まずにプログラムの実行が終了するまでスクリプトを待機させるかどうかを示すブール値です。bWaitOnReturn に TRUE を指定すると、プログラムの実行が終了するまでスクリプトの実行は中断され、Run メソッドはアプリケーションから返される任意のエラー コードを返します。bWaitOnReturn に FALSE を指定すると、プログラムが開始すると Run メソッドは即座に復帰して自動的に 0 を返します (これをエラー コードとして解釈しないでください)。

id:windofjuly

下記のように返り値を受け取って以後の処理を分けるほうがベター

result = wsh.Run "その1.vbs",,true
if result = ほげほげ then いろいろ
2013/09/03 09:42:07
id:gizmo5 No.3

gizmo5回答回数484ベストアンサー獲得回数1382013/09/03 09:38:23

ポイント75pt

WScript.Shell の Run メソッドはパラメータを三つ取ります。
三番目のパラメータを TRUE にするとプログラムの実行完了を待ち合わせます。
http://msdn.microsoft.com/ja-jp/library/cc364421.aspx

先に呼びだす 'その1.vbs' を以下のように呼び出してみてください。

wsh.Run("その1.vbs", 1, TRUE)
id:dawakaki No.4

だわかき回答回数797ベストアンサー獲得回数1222013/09/03 18:32:52

ポイント75pt

以下のようなコードにして下さい。

set wsh = CreateObject("WScript.Shell")
objWshShell.Run("その1.vbs",1,1)

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません