WScriptオブジェクトの利用
Theme
前回同様、VBScriptの学習を進めます
参考:
WScriptオブジェクトとは
WScriptオブジェクト
cf.Errオブジェクト:VBScriptのオブジェクト
DimやSetでオブジェクト宣言・代入は不要
WScript.<プロパティ/メソッド>の構文で使用
主なメソッド/プロパティ
プロパティ
情報グループ | プロパティ | 内容 |
---|---|---|
WSH実行ファイルの情報 | Name | WSHの実行ファイル名 |
^ | Path | WSHの実行ファイルのあるフォルダ・パス |
^ | FullName | Wshの実行ファイルパス |
^ | Version | WSHのバージョン |
スクリプトの情報 | ScriptName | スクリプトのファイル名 |
^ | ScriptFullName | スクリプトのフルパス |
^ | Interactive | バッチモードorインタラクティブモード |
^ | TimeOut | タイムアウトの秒数 |
^ | Arguments | コマンドライン引数の情報 |
標準入出力 | StdIn | 標準入力 |
^ | StdOut | 標準出力 |
^ | StdErr | 標準エラー出力 |
メソッド
処理グループ | メソッド | 内容 |
---|---|---|
メッセージ表示 | Echo | メッセージを表示 |
スクリプト実行制御 | Quit | スクリプトの終了 |
^ | Sleep | スクリプトの一時停止 |
オブジェクトの取り扱い | CreateObject | オブジェクトの作成 |
^ | ConnectObject | オブジェクトに接続 |
^ | DisconnectObject | オブジェクトを切断 |
^ | GetObject | オブジェクトの取得 |
使用方法
VBScriptファイルの実行方法
★既定exeを変える方法
コマンド・プロンプト上
'既定をcscript.exeにする cscript.exe //H:CScript '既定をwscript.exeにする cscript.exe //H:WScript
★コンソール出力する際の以下の文字列を表示しない方法
'出力したくない文字列 Microsoft(R) Windows Script Host Version 5.6 Copyright(C) Microsoft Corporation 1996-2001. All rights reserved. '方法 cscript.exe //NoLogoオブション付与
Echoメソッドについて
wscript.exeで実行した場合(wscript.exe 〇〇.vbs)
Point VBScript の MsgBox と似た動作
- メッセージウィンドウ表示
WScript.Echo "hoge"
↓
hoge
- 改行連結
WScript.Echo "hoge" & vbcrlf & "fuga"
↓
hoge
fuga
- 空白連結
WScript.Echo "hoge", "fuga"
↓
hoge fuga
cscript.exeで実行した場合(cscript.exe 〇〇.vbs)
Point Debug.Print と似た動作
- コンソール表示
WScript.Echo "hoge"
↓
hoge
- 自動で改行コード付与
'①②は同様の表示 '① WScript.Echo "hoge" & vbcrlf & "fuga" '② WScript.Echo "hoge" WScript.Echo "fuga"
↓
hoge fuga
Interactiveプロパティについて
スクリプトの実行モード
対話モード:True ← デフォルト
バッチモード:False
★バッチモード(スクリプト実行中にエラーやEchoメソッドの表示がされないモード )で実行
cscript.exe //B <スクリプト・ファイル名>
TimOutプロパティについて
スクリプト実行できる最大時間(秒数)
既定値 0
'スクリプト実行が30秒を過ぎると停止(ダイアログも閉じる) cscript.exe //T:30 <スクリプト・ファイル名>
Argumentsプロパティについて
WshArgumentsクラスのオブジェクトを返す
WshArgumentsオブジェクト(コレクション)に含まれる要素は
コマンドライン引数全体を空白記号で分割した文字列(String型)
WshArgumentsのプロパティ
Count : コマンドライン引数の数 //0=引数なし、1=引数1つ...
Item:既定なので省略化★For Each~Next 列挙可能
Point コマンドライン引数にはファイル自体も可能
GUI操作でExporler上でvbsファイルにtxtファイル等をドラッグアンドドロップし実行するとwscript.exeで実行される
- Named/Unnamed:名前付き/名前なしの引数(コレクション)を返す
Point 名前付き/名前なしとは
Named→WshNamedコレクション
Unnamed→WshUnnamedコレクション
cscript.exe ShowParameter2.vbs /param1 /param2:value2 param3 '/param1 → 名前付き引数(値なし) '/param2:value2 → 名前付き引数(値あり) '/param3 → 名前なし引数
Option Explicit 'オブジェクト変数の宣言と代入 Dim objWshNamed, objWshUnnamed Set objWshNamed = WScript.Arguments.Named Set objWshUnnamed = WScript.Arguments.Unnamed '名前付き引数の存在有無を確認 If objWshNamed.Exists("param1") Then WScript.Echo "名前付き引数/param1が指定されました。" End If '名前付き引数の存在有無を確認し、その値を表示 If objWshNamed.Exists("param2") Then WScript.Echo "名前付き引数/param2が指定されました。", _ "その値は" & objWshNamed.Item("param2") & "です。" End If '名前なし引数の列挙 Dim intIndex If objWshUnnamed.Count > 0 Then For intIndex = 0 To objWshUnnamed.Count - 1 WScript.Echo "引数なし引数" & objWshUnnamed.Item(intIndex) & "が指定されました。" Next End If 'オブジェクトの破棄 Set objWshNamed = Nothing set objWshUnnamed = Nothing
↓
Microsoft (R) Windows Script Host Version 5.812 Copyright (C) Microsoft Corporation. All rights reserved. 名前付き引数/param1が指定されました。 名前付き引数/param2が指定されました。 その値はvalue2です。 引数なし引数param3が指定されました。 PS C:\Users\***\***>
StdIn/StdOut/StdErrプロパティについて
概要
使用用途
StdIn
InputBox関数を使わずにユーザに文字列を入力させたいとき
入力値の文字数を指定数だけ取得
strFromStdIn = objStdIn.Read(5)
StdOut
コンソールにユーザのための情報を表示させるときに便利
cscript.exeで実行を強制させたいときに使用するとよい(wscript.exeではStdOutプロパティを参照しようとするとエラー)
Writeメソッドを用いると、改行を加えず文字列を表示する→プログレスバーを作成できる
その他
他のコンソールアプリケーションやファイル、デバイスと連携ができる(「リダイレクト」「パイプ」で検索してみよう)
Sleep/Quitメソッドについて
概要
スクリプトの実行制御をおこなう
Sleepの使用
WScript.Sleep 10000
10秒(ミリ秒単位)
待機の間、CPUを占有しない
待機の間、ほかのオブジェクトでイベントが発生した場合、そちらに処理が移る
↓
イベント発生の待機として空ループを回すときに使用できる
Quitの使用
WScript.Quit()
(数値)引数=エラーコード 省略時は0:正常終了
スクリプトを終了する
COMオブジェクトを扱うメソッドについて
メソッド
CreateObject 作成
ConnectObject 接続
DisconnectObject 切断
GetObject 取得
・・・続きは次回