VBSでWSHを使い
バッチファイルを呼び出す!そういった処理をしていました。
バッチファイルでFINDSTRを使ったんですね。
VBSじゃ出来ないもんね。たぶん。
てか、バッチファイルのほうが楽だし。
で、確認してみたところ
バッチファイルの終了待ちをしていないみたいだった。
WSHでバッチファイルを呼び出して処理させるのは良いけれど
その後、処理後のファイルが必要になる。
その時の速度が速すぎるせいで、前回使用したデータを参照してしまっていた。
どうしたものか…と考えていたところ、解決策を発見!
ws.run("tmp.bat",1,1);
http://oshiete.goo.ne.jp/qa/2168093.html
としてみて下さい。
3つめの引数が0以外の時終了待ちします。
おほう?
やってみたけれど上手く行かなかった。
Document and Settings
とかの空白を引数だとコマンドプロンプトに
判定されないように、わざわざ
最初と最後をダブルコーテーションで囲んでた。
それが問題かと思ったけど違う。
はて?
って思ったら以下サイトにありました。
Dim WSHShell Set WSHShell = WScript.CreateObject("WScript.Shell") WSHShell.Run ("""%SystemRoot%\notepad.exe"""),1,true 'WScript.sleep(1000) WSHShell.Run ("""%SystemRoot%\System32\calc.exe"""),1,true WScript.Quithttp://blogs.yahoo.co.jp/memo_jane/2802229.html
ほ?
おお、できた!
ってことでソース。
'スクリプト名を含まないフルパスを編集する strScriptPath = Replace(window.location & "" , "file:///","") strScriptPath = Replace(strScriptPath,"/","\") strScriptPath = Replace(strScriptPath,"%20"," ") count=LEN(strScriptPath) For i=count to 1 step -1 TEST=MID(strScriptPath,i,1) If TEST<>"\" then strScriptPath=LEFT(strScriptPath,i) End if If TEST="\" then strScriptPath=LEFT(strScriptPath,i-1) Exit for End if Next
Set FS = CreateObject("Scripting.FileSystemObject")'ファイル存在するかを確認 If FS.FileExists(strScriptPath & "\data\Database.csv")=True then 'ファイルがある場合は Dim ComDATA Set Shell = CreateObject("WScript.Shell") Shell.Run("""" & strScriptPath & "\test.bat" & """" & " " & HIKISUU),0,true
ちなみに、HIKISUUってのは引数です。
一つ目の0 で コマンド非表示
二つ目のTrueで 完了待ち ということです。