Wscript.Echo は、Wscript.exe から実行すると、一回の処理毎にメッセージボックスを表示するので、連続処理する場合は避けなければなりません(wscript.exe をタスクマネージャから強制終了する事になります) Wscript.exe は、通常エクスプローラからダブルクリックでスクリプトを実行した際に使用されるので、誤って実行してしまう事を避ける方法です。以下のサンプルでは、スクリプトにデータを含めて、そのデータをループ処理で表示する処理ですが、コマンドプロンプトからの実行を強制しています( コマンドプロンプトから、cscript.exe を使用しないと Quit されます )![]()
右端のアイコンよりダウンロードできます
<JOB> <SCRIPT language="VBScript"> ' コマンドプロンプトより起動される為の処理 str = WScript.FullName str = Right( str, 11 ) str = Ucase( str ) if str <> "CSCRIPT.EXE" then strMessage = "コマンドプロンプトより cscript " & WScript.ScriptFullName strMessage = strMessage & " と指定して実行して下さい " & vbCrLf & vbCrLf strMessage = strMessage & "( この文字列をクリップボードにコピーしたい場合は" strMessage = strMessage & "ctrl+c です )" WScript.Echo strMessage WScript.Quit end if aData = Split( getResource("myText"), vbCrLf ) For I = 0 to Ubound( aData ) if Trim( aData(I) ) <> "" then Wscript.Echo aData(I) end if Next </SCRIPT> <RESOURCE id="myText"> コード名称マスタ 商品マスタ 得意先マスタ 社員マスタ 取引データ </RESOURCE> </JOB>
以下は、Wscript.exe で起動された場合は、cscript.exe で自分自身を呼び出して再度実行しています( 最後にコマンドプロンプトの pause で停止 )
右端のアイコンよりダウンロードできます
<JOB> <SCRIPT language="VBScript"> ' コマンドプロンプトより起動される為の処理 str = WScript.FullName str = Right( str, 11 ) str = Ucase( str ) if str <> "CSCRIPT.EXE" then str = WScript.ScriptFullName Set WshShell = Wscript.CreateObject("WScript.Shell") strParam = " " For I = 0 to Wscript.Arguments.Count - 1 if instr(Wscript.Arguments(I), " ") < 1 then strParam = strParam & Wscript.Arguments(I) & " " else strParam = strParam & """" & Wscript.Arguments(I) & """ " end if Next Call WshShell.Run( "cmd.exe /c cscript.exe """ & str & """" & strParam & " & pause", 3 ) WScript.Quit end if aData = Split( getResource("myText"), vbCrLf ) For I = 0 to Ubound( aData ) if Trim( aData(I) ) <> "" then Wscript.Echo aData(I) end if Next </SCRIPT> <RESOURCE id="myText"> コード名称マスタ 商品マスタ 得意先マスタ 社員マスタ 取引データ </RESOURCE> </JOB>
そして、最後は面倒な記述部分を WEB 上に置いて呼び出して実行しています (Crun と言う関数)
右端のアイコンよりダウンロードできます
<JOB> <COMMENT> ************************************************************ WSH 実行スケルトン ************************************************************ </COMMENT> <COMMENT> ************************************************************ 外部スクリプト定義 ************************************************************ </COMMENT> <SCRIPT language="VBScript" src="http://lightbox.in.coocan.jp/laylaClass.vbs"> </SCRIPT> <SCRIPT language="VBScript"> ' *********************************************************** ' 処理開始 ' *********************************************************** Call laylaFunctionTarget( "http://lightbox.in.coocan.jp/" ) Call laylaLoadFunction( "baseFunction.vbs" ) Crun() aData = Split( getResource("myText"), vbCrLf ) For I = 0 to Ubound( aData ) if Trim( aData(I) ) <> "" then Wscript.Echo aData(I) end if Next </SCRIPT> <RESOURCE id="myText"> コード名称マスタ 商品マスタ 得意先マスタ 社員マスタ 取引データ </RESOURCE> </JOB>