(for Internet Explorer)
← ▼ ▲
↑
/set_input_debug オプション、g_CUI.m_Auto_DebugCount
g_CUI.m_Auto_DebugCount = 1
cscript.exe sample.vbs /set_input:1.2. /set_input_debug:1
VBS のソース
コマンドライン
→ input
/set_input オプション
を指定したときに、１つずつ Enter キーを入力するまで待ちます。
(src)
関連
指定した値の回数目の入力から待ちます。
これにより、ユーザーの入力を自動的に行うときに、入力内容を確認しながら実行できます。
← ▼ ▲
RunProg
や
Shell::Exec
で cscript.exe を起動したプロセスで input を使うと、
標準入力待ちでハングアップするので、代わりに内部で、GUI から入力する
InputBox
が呼ばれます。
→ [T_ExecStdIn] Exec で起動したプロセスの標準入力
→ RunProg
InputBox が呼ばれるかどうかは、スクリプトを起動したときに指定するコマンド
ライン・オプションに /GUI_input:1 を指定したかどうかで決まります。 RunProg
で、cscript を起動すると、/GUI_input:1 は、自動的に指定されます。
子プロセスで pause したとき、pause メッセージを子プロセスから受け取ったら
親プロセスで、Enter の入力待ちをします。 Enter を押したら、子プロセスの
標準入力にも Enter を転送します（EchoStream関数）。 自動入力するときは、
pause メッセージに少し手を加えて、親プロセスで待たないようにします。
/GUI_input オプション
input を呼び出したとき、コマンドライン・スクリプトでも、強制的に GUI から入力する
オプションです。
cscript Sample.vbs /GUI_input
起動コマンドの例：
テスト
参考
→ vbslib.vbs
ソース
← ▼ ▲
InputPath
Function InputPath( Prompt as string, Flags as integer ) as string
プロンプトを表示し、ユーザからファイルのパス（場所）の入力を待ちます。
【引数】
Prompt
Flags
表示する内容
0 または c.CheckFileExists など（下記）
ユーザが入力したパス、入力なし=""
返り値
ユーザは、 " "で囲んだパスを入力することができます。このとき、返り値は、" " を含みません。
サンプル
Set c = g_VBS_Lib
echo "[SampleTool]"
path = InputPath( "path>", c.CheckFileExists or c.CheckFolderExists or _
c.UseArgument1 or c.AllowEnterOnly )
If path = "" Then path = GetPathOfClipboardText()
(src)
Flags 引数
[SampltTool]
path>aaa
not found
path>C:\
下記を設定します。 複数設定するときは、or してください。 c は g_VBS_Lib です。 何も設定しない
ときは、0 を指定してください。
c.CheckFileExists
c.CheckFolderExists
c.AllowEnterOnly
ファイルとして存在するかチェックします。
フォルダとして存在するかチェックします。
何も入力しなかったときに再入力を要求しません。 このとき、返り値=""
ファイル：
vbslib.vbs
関連
→ input
テスト
→ Test.vbs # T_InputPath_WorkFolder_File
→ g_start_in_path
サンプル画面
サンプル
Dim path, param
If ArgumentExist( "Path" ) Then
path = WScript.Arguments.Named.Item( "Path" )
echo "パス>"+ path
Else
path = InputPath( "パス>", Empty )
End If
param = input( "Param>" )
Linux のパスも入力できるようにするとき
Linux のパスは、オプションと解釈されてしまうため、/Path オプションを使って指定して
ください。
cscript Sample.vbs /Path:/home/user1/file Param2
→ Test.vbs # T_InputCommand_WindowsParam
→ Test.vbs # T_InputCommand_LinuxParam
→ Test.vbs # T_InputPathArg
c.UseArgument1
c.UseArgument2
スクリプトを起動したときの第１パラメーターがあれば、それを入力とする (*1)
スクリプトを起動したときの第２パラメーターがあれば、それを入力とする (*1)
→ サンプル （ドラッグ＆ドロップからテキスト処理）
InputPath
GetPathOfClipboardText
set_input
(*1)
で指定した自動入力の内容や
UseArgument1 や UseArgument2 を指定した場合、
は、次の番目に進みません。 次の自動入力や
ショートハンド・プロンプトのパラメーター
パラメーターの番目がいくつのときでも指定した番目のものが入力できるからです。
c.AllowWildcard
ワイルドカードが入力できるようにします。
相対パスを入力したら、
g_start_in_path
を基準とした相対パスとみなし、返り値は、フル パスに
なります。 InputPath を呼び出す前に、g_start_in_path は、変更することができます。
${ から始まる入力をしたときは、フル パスを値に持つ
${ } 変数
であるとして、フル パスに
しません。
← ▼ ▲
InputCommand
Sub InputCommand( LeadOrOpt as string or InputCommandOpt, Prompt as string,
Opt as variant, AppKey as AppKeyClass )
に入ります。 入力するコマンドは、呼び出す関数の名前です。
【引数】
LeadOrOpt
Prompt
リード文、または、オプション
プロンプトの表示内容。 Empty="番号またはコマンド"
Main 関数の AppKey 引数
AppKey
Main 関数の Opt 引数
Opt
(src)
Sub main2( Opt, AppKey )
InputCommand "Document.svg を参照 (Google Chrome や Snap Note で見えます)", _
"コマンド >", Opt, AppKey
End Sub
Sub SyncSymbols( Opt, AppKey )
echo "SyncSymbols 関数が呼ばれました。"
End Sub
サンプル
実行画面
--------------------------------------------------------------------------------
Document.svg を参照 (Google Chrome や Snap Note で見えます)
コマンド >SyncSymbols
--------------------------------------------------------------------------------
SyncSymbols 関数が呼ばれました。
--------------------------------------------------------------------------------
Document.svg を参照 (Google Chrome や Snap Note で見えます)
コマンド >
FuncA コマンドを実行したところ
ユーザーが入力したコマンドと同じ名前の関数が呼ばれます。 たとえば、SymcSymbols と入力したら、
ImputCommand 関数の中から、GetRef 関数を使って、SymcSymbols 関数が呼ばれます。 呼ばれる
関数の引数は、main2 関数と同じ、Opt と AppKey にしてください。
InputCommand
SyncSymbols
Sub Main( Opt, AppKey )
Set o = new InputCommandOpt
o.Lead = "Document.svg を参照 (Google Chrome や Snap Note で見えます)"
Set o.CommandReplace = Dict(Array( "1","RunProgram", "2","InvestigateLog" ))
Set o.MenuCaption = Dict(Array( "1","起動コマンド [%name%]" ))
InputCommand o, Empty, Opt, AppKey
End Sub
Sub InvestigateLog( Opt, AppKey )
Set c = g_VBS_Lib
path = InputPath( "ログ・ファイルのパス >", c.CheckFileExists )
key = input( "よろしいですか。[Y/N]" )
If key<>"y" and key<>"Y" Then Exit Sub ' ... Cancel
Investivate path
echo "解析しました。"
End Sub
サンプル
メニューから選択する
-------------------------------------------------------------------------------
Document.svg を参照 (Google Chrome や Snap Note で見えます)
1. 起動コマンド [RunProgram]
2. InvestigateLog
番号またはコマンド >2
-------------------------------------------------------------------------------
ログ・ファイルのパス >C:\Log\Test_log.txt
よろしいですか。[Y/N]y
解析しました。
下記はメニュー2を選んだところ。 2 の代わりに InvestigateLog も入力できます。
実行画面
→ T_InputCommand_Manually.vbs # main
テスト
InputCommandOpt クラス
Class InputCommandOpt
Public Lead '// as string
Public CommandReplace '// as Dictionary of string
Public MenuCaption '// as Dictionary of string
Public AllTestName '// as string
End Class
InputCommandOpt
→ サンプル
InputCommand
コマンド >SyncSymbols
Sub SyncSymbols( Opt, AppKey )
echo "SyncSymbols 関数が呼ばれました。"
End Sub
ImputCommand Empty, "コマンド >"
C:\Log\Test_log.txt
vbslib.vbs
ファイル：
InputCommand 関数を呼び出すスクリプトは、起動するときに専用コマンドをパラメーターに指定すると、
ユーザの入力待ちにはならず、InputCommand 関数の中からすぐに専用コマンドに対応する関数を呼び
出すようになります。 関数から返ったら（InputCommand から返り）、スクリプトのプロセスは終了します。
専用コマンド名の次やそれ以降のパラメーター（上記の C:\folder\file.txt と y ）は、内部で
set_input
に渡されて、自動的に入力するようになります。 ただし、Enter の入力は "." と記述するのではなく、
パラメーターの区切りが Enter の入力になります。 Enter のみの入力をしたいときは、下記のように
cmd.exe から起動して、"" を指定してください。
→ InputCommandOpt
ショートハンド・プロンプト
InputPath
y
2
input
関連
→ ショートハンド・プロンプト
→ T_InputCommand_Target2.vbs # [main2]
→ T_InputCommand_Target.vbs # [main2]
→ Test.vbs # T_InputCommand_Param
ショートハンド・プロンプトのテスト
Dim r
r = RunProg( "cscript.exe //nologo """+ SearchParent( "Prompt.vbs" )+_
""" CommandA param1 """"", "out.txt" )
CheckTestErrLevel r
Assert "out.txt", "T_ans.txt"
del "out.txt"
コマンド >CommandA
入力１ >param1
入力２ >
実行しました。
親フォルダーにある Prompt.vbs から起動できるショートハンド・プロンプトに、
CommandA コマンドを入力、入力１に param1 を入力、入力２に Enter のみ
入力するときの、テスト・スクリプトは、下記のようになります。
SearchParent
Prompt.vbs
CommandA
param1
""""
AllTest コマンド
コマンド入力するときに、「AllTest」 と入力すると、InputCommandOpt クラスの CommandReplace に登録
した関数をすべて呼び出します。 コマンド名を 「AllTest」 以外にしたいときは、InputCommandOpt クラスの
AllTestName を設定してください。
Dim r
r = RunProg( "cscript //nologo T_Target.vbs AllTest", "" )
CheckTestErrLevel r
参考
→ ショートカットやバッチファイルなどから専用コマンドを実行する
CommandA
param1
→ AllTest コマンド
T_ans
ショートハンド・プロンプトのデバッグ
Sub CommandA( Opt, AppKey )
dbg = Opt("command_debug")
Set c = g_VBS_Lib
If dbg Then g_CUI.m_Auto_KeyEnter = "/"
If dbg Then set_input "C:\Folder\File1.txt"
path = InputPath( "ファイルのパス >", c.CheckFileExists )
:
End Sub
Sub CommandA_debug( Opt, AppKey )
Opt("command_debug") = True
CommandA Opt, AppKey
End Sub
dbg = Opt("command_debug")
If dbg Then g_CUI.m_Auto_KeyEnter = "/"
If dbg Then set_input "C:\Folder\File1.txt"
Sub CommandA_debug( Opt, AppKey )
Opt("command_debug") = True
CommandA Opt, AppKey
End Sub
下記のようにして、CommandA_debug コマンドを起動すると、入力する内容を自動的に入力します。
プロンプトのみ（メニュー項目なし）
キーワード：
Lead, CommandReplace, MenuCaption
すぐに関数を呼び出したかどうかをスクリプト内で判断したいときは、
g_InputCommand_Args
.Count
が 1 以上かどうかで判定します。
InputCommandOpt
CommandReplace は、要素番号 0 から始まる配列で、
要素番号が偶数の要素は、コマンドの番号または略称、
要素番号が奇数の要素は、実行する関数名です。
Lead は、ショートハンド・プロンプトの最初に表示される「リード文」です。
MenuCaption は、要素番号 0 から始まる配列で、
要素番号が偶数の要素は、コマンドの番号または略称、
要素番号が奇数の要素は、ショートハンド・プロンプトに表示されるメニュー項目です。
← ▼ ▲
g_InputCommand_Args
Dim g_InputCommand_Args as array of string
ショートハンド・プロンプト
のパラメーター。
g_InputCommand_Args(0) は、専用コマンド名、g_InputCommand_Args(1) 以降は、パラメーターです。
Set parameters = new_ArrayClass( g_InputCommand_Args )
If parameters.Count >= 1 Then _
parameters.Remove 0, 1 '// Remove special command name
parameters = CmdLineFromStr( parameters.Items )
set_input "" '// 現在のプロセスに設定されている自動入力データをクリアする
RunProg "cscript //nologo Prompt.vbs CommandX_Child "+ _
parameters +" /g_debug__:1", ""
サンプル
子プロセスにパラメーターを渡します。
/g_debug__
g_InputCommand_Args.Count = 0 のときは、対話式のショートハンド・プロンプトが使われてます。
g_InputCommand_Args.Count >= 1 のときは、ショートハンド・プロンプトをバッチ処理で実行しています。
← ▼ ▲
ChangeNumToCommandOrNot
Function ChangeNumToCommandOrNot( in_Key as string, in_CommandDictionary as dictionary of string, _
in_NumName as string, in_IsInputNumOrCommand as boolean ) as string
リストとコマンド番号が重なったときは、どちらかキーボードから選択するようにユーザーに要求しｊます。
【引数】
in_Key
in_CommandDictionary
入力した番号の文字列
コマンド名の辞書。 キー＝番号の文字列
リストの項目の名前
in_NumName
→ T_Value.vbs
テスト
→ vbslib.vbs
ソース
返り値
番号（リストの項目の番号の文字列）、または、コマンド名
in_Key の番号にリストの項目があるかどうか
in_IsInputNumOrCommand
← ▼ ▲
SendKeys
→ キーボード・コードを送る
(src)
参考
Sub SendKeys( WindowTitle as string, KeyCords as string, LateTime as integer )
キーボード入力をエミュレーションして自動的にキー操作をします。
【引数】
WindowTitle
KeyCords
"" または、キーボード・コードを送るウィンドウのタイトル(下記)
キーボード・コード (下記)
LateTime
0 または、キーボード・コードを送るまでの時間（ミリ秒）
WindowTitle 引数に指定した文字列が、ウィンドウのタイトルに、前方一致、または、
後方一致したウィンドウに対して、キー操作をします。
SendKeys "メモ帳", "%FS", 200
サンプル：
WindowTitle 引数
KeyCords 引数
制御キーの入力は、次のように指定します。
[Alt]+[F], [S]
"%FS"
[Ctrl]+[C]
"^C"
[Enter]
"{ENTER}"
キー入力
KeyCords 引数
[Esc]
"{ESC}"
"{TAB}"
[Tab]
Alt キーを押しながら F、離して S
説明
シフトキーを押しながら連続して、X、P
"+XP"
シフトキーを押しながら、X、離して、P
[Shift]+[X], [P]
[Shift]+[X], [Shift]+[P]
"+(XP)"
[+]
"{+}"
→ SendKeys メソッド (Web)
その他のキー
[{]
"{{}"
[[]
"{[}"
ファイル：
vbslib.vbs
テスト
→ T_UI1_Manual.vbs # SendKeys
LateTime 引数
キーコードを送る前に待つ時間を指定します。
直前の処理がウィンドウを開く処理など、キーコードを送る対象が準備できるまでに
時間がかかるときに指定してください。
→ WshShell::SendKeys
Alt キー + [F] + [S] …… 保存
→ Windows管理者のためのWindows Script Host入門：第5回 (4-4) - ＠IT (Web)
← ▼ ▲
Prompt
→ Prompt コマンド
Sub Prompt( TCHAR* Desc, HANDLE* out_Obj );
VBScript が実行できるプロンプトを開始します。
ソース
→ System.vbs
これまでにグローバル変数に設定していた値を参照することもできます。
Prompt 関数を呼び出した関数のローカル変数は参照できません。
参考
← ▼ ▲
Play
Play "sample.mp3"
Sub Play( Path as string )
音楽ファイルや効果音ファイルを鳴らします。
【引数】
Path
.wav, .mp3 などのファイルパス
(src)
→ 音を鳴らす (VBScript)
動画ファイルを指定すると、音声だけが流れます。
Play env( "%windir%\Media\tada.wav" )
鳴らし始めると、すぐに Play 関数から戻り、音声が流れながらスクリプトの続きを実行します。
WaitForSound
を使えば、音声が終わるまで待つことができます。
スクリプトを終了すると、音声は止まります。
サンプル
ファイル：
vbslib.vbs
テスト
関連
→ T_Sound.vbs # [T_Sound]
→ WaitForSound
→ SetVolume
← ▼ ▲
WaitForSound
Play "sample.mp3"
WaitForSound Empty
Sub WaitForSound( Timeout_msec as integer )
で再生した音声が終わるまで待ちます。
【引数】
Timeout_msec
タイムアウト（ミリ秒）、または Empty （タイムアウトなし）
(src)
Play
タイムアウトになったら、音声は停止します。
音声が終わるまで待つ
5秒たっても音声が終わらなかったら止める
Play "sample.mp3"
WaitForSound 5000
Play "sample.mp3"
WaitForSound 0
すぐに音声を止める
サンプル
サンプル
サンプル
Empty
5000
0
vbslib.vbs
ファイル：
テスト
→ T_Sound.vbs # [T_Sound]
関連
→ Play
← ▼ ▲
SetVolume
Sub SetVolume( Volume as integer )
音量を設定します。 0 が最小、100 が最大。
【引数】
Volume
音量。デフォルトは 100
(src)
SetVolume 100
関連
サンプル
→ Play
vbslib.vbs
ファイル：
テスト
→ T_Sound.vbs # [T_Sound]
← ▼ ▲
SystemSound
SystemSound ".Default"
Sub SystemSound( Sound as string )
コントロールパネルに設定されている効果音を鳴らします。
【引数】
Sound
効果音の種類（下記）
(src)
→ システムの警告音を鳴らす (VBScript)
"SystemAsterisk"
メッセージ（情報）
".Default"
一般の警告音
メッセージ（警告）
"SystemExclamation"
システムエラー
"SystemHand"
メッセージ（問い合わせ）
"SystemQuestion"
Windowsの起動
"SystemStart"
Windowsの終了
"SystemExit"
Windowsログオン
"WindowsLogon"
"WindowsLogoff"
Windowsログオフ
"DeviceConnect"
デバイスの接続
"DeviceDisconnect"
デバイスの切断
"Navigating"
ナビゲーションの開始
（フォルダやハイパーリンクをクリックしたときの音）
Play
音声の止め方や音量の調整は、
と同じです。
WaitForSound
しなくても、すぐに音声は停止しません。
スクリプトを終了時に鳴らしても、数秒の効果音であれば、
サンプル
関連
テスト
→ T_Sound.vbs # [T_Sound]
← ▼ ▲
GetTextFromClipboard
Function GetTextFromClipboard() as string
クリップボードにあるテキストを返します。
→ T_Clipboard_Manually.vbs # [T_GetTextFromClipboard]
テスト
(src)
クリップボードにテキストが無ければ、E_BadType エラーになります。
ファイル：
vbslib.vbs
使用するには、vbslib フォルダーに、
vbslib_helper.exe
が必要です。
← ▼ ▲
GetPathOfClipboardText
Function GetPathOfClipboardText() as string
クリップボードにあるテキストをファイルに出力して、そのパスを返します。
→ T_Clipboard_Manually.vbs # [T_GetTextFromClipboard]
テスト
(src)
クリップボードにテキストが無ければ、E_BadType エラーになります。
ファイル：
vbslib.vbs
使用するには、vbslib フォルダーに、
vbslib_helper.exe
が必要です。
サンプル
Set g = g_VBS_Lib
echo "Enter のみ：クリップボードの内容を入力とします。"
path = InputPath( "path>", g.CheckFileExists or g.CheckFolderExists or _
g.UseArgument1 or g.AllowEnterOnly )
is_clipboard = False
If path = "" Then path = GetPathOfClipboardText() : is_clipboard = True
If is_clipboard Then del path
クリップボードの内容が入ったファイルが不要になったら削除してください。
← ▼ ▲
SetTextToClipboard
Sub SetTextToClipboard( Text as string )
クリップボードにテキストをコピーします。
(src)
→ T_Clipboard_Manually.vbs # [T_GetTextFromClipboard]
テスト
ファイル：
vbslib.vbs
使用するには、vbslib フォルダーに、
vbslib_helper.exe
が必要です。
← ▼ ▲
データ、変数、定数、文字列、配列、日時
→ ArrayClass クラス
→ ArrayDictionary クラス
→ QuickSort
→ QuickSort_fromDic
→ CInt2
→ ShakerSort_fromDic
→ ShakerSort
辞書に入っているデータをクイックソートします。
配列をクイックソートします。安定ソートではありません。
辞書に入っているデータをシェーカーソートします。
配列をシェーカーソートします。安定ソートです。
文字列を数値に変換します。
配列を扱いやすくするクラスです。
標準の Dictionary の Item を、配列にしたクラスです。
→ CreateGuid
GUID を生成します。
→ StringStream クラス
ワイルドカードにマッチするかどうか判定します。
[ テスト ]
その他
並べ替え、ソート
集合（コレクション）
関連
→ 文字列 (VBS)
→ 変数、Empty、型、配列 (VBS)
→ StrMatchKey クラス
文字列を TextStream と同じようにアクセスします。
オブジェクト
→ get_Object
→ get_ObjectFromFile
→ get_ObjectsFromFile
→ include_objs
→ new_X
静的オブジェクトを取得します。
スクリプトファイルから静的オブジェクトを取得します。
スクリプトファイルから静的オブジェクトを一覧します。
静的オブジェクト・スクリプトファイルをインクルードします。
文字列で指定した名前のクラスのオブジェクトを生成します。
→ 環境変数
配列 （Array）
→ IsSameArray
配列のすべての要素が等しいか判定します。
→ DicToArr
Dictionary を配列に変換します。
→ AddArrElem
配列の要素を追加コピーします。
→ Dic_addNewObject
辞書、ハッシュ （Dictionary）
→ DicItem
→ GetDicItem
オブジェクトを生成して、辞書に追加します。
登録されていないときも、新規に登録しない辞書参照。
Empty でもオブジェクトでも取得できる辞書参照。
→ Dict
辞書を生成します。
→ Dic_addElem
→ Dic_add
→ Dic_sub
辞書の要素を設定します。
辞書を加算します。
辞書を減算します。
→ MeltCmdLine
コマンドラインの１項目を取り出し、通常の文字列に戻す。
→ ArrayToNameOnlyClassArray
→ ArrayFromCSV
→ ArrayFromCSV_Int
配列を、NameOnlyClass の配列に変換します。
CSV 形式の１行を解析して、配列に格納する。
CSV 形式の１行を解析して、数値の配列に格納する。
→ 定数、g_VBS_Lib
定数
構造化された定数
他にもあります。左のツリーから選択してください。
←
↓