仕事を辞めたい、怠け者だからな

仕事を辞めたいとグダグダ言いながらも、やめる手順が面倒だということで結局やめない「からな」の面倒嫌いブログです。日々のことなり、色々書いていきます。自由気まま、やりたいことばかりやっちゃう。

仕事を辞めたい、怠け者だ
からな

メインブログです。
ぐだぐだしつつも、
やりたいことに全力全身!

最高の出会いを求めて
自身の最高の出会いまでの道のり、
方法を書いていきます。

標準体重を目指して
標準体重を目指して奮闘する!
ダイエットグッズ実践含みます。

【WSH】他のバッチを呼びその終了を待つ方法【VBS】

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
'WScript.sleep(1000)
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で 完了待ち ということです。


アフィリエイト ハッピーメールバナー