VBSでWSHを使い
バッチファイルを呼び出す!そういった処理をしていました。
バッチファイルでFINDSTRを使ったんですね。
VBSじゃ出来ないもんね。たぶん。
てか、バッチファイルのほうが楽だし。
mochi-ha.hatenablog.com
で、確認してみたところ
バッチファイルの終了待ちをしていないみたいだった。
WSHでバッチファイルを呼び出して処理させるのは良いけれど
その後、処理後のファイルが必要になる。
その時の速度が速すぎるせいで、前回使用したデータを参照してしまっていた。
どうしたものか…と考えていたところ、解決策を発見!
ws.run("tmp.bat",1,1);
としてみて下さい。
3つめの引数が0以外の時終了待ちします。
http://oshiete.goo.ne.jp/qa/2168093.html
おほう?
やってみたけれど上手く行かなかった。
Document and Settings
とかの空白を引数だとコマンドプロンプトに
判定されないように、わざわざ
最初と最後をダブルコーテーションで囲んでた。
それが問題かと思ったけど違う。
はて?
って思ったら以下サイトにありました。
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run ("""%SystemRoot%\notepad.exe"""),1,true
WSHShell.Run ("""%SystemRoot%\System32\calc.exe"""),1,true
WScript.Quit
http://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で 完了待ち ということです。