(for Internet Explorer)
取得
.Length
.Count
.Item( symbol as string )
(Default Property)
.Remove( symbol as string )
環境変数の設定の一覧。 Array( "VAR1=A", ... )
symbol に指定した環境変数の参照
For Each line  In g_sh.Environment
  '// line sample is  "VAR1=A"
Next
g_sh.Environment(0) は、"=::=::\" です。 無いこともあります。
g_sh.Environment(1) は、"=C:=(カレントディレクトリ)" です。
要素数
要素数
Dictionary 準拠メンバー
その他のメンバー
関連
MsgBox "〜しました。"
(p297)
vbOKOnly = 0, vbOKCancel = 1, vbYesNo = 4, vbYesNoCancel = 3
vbCritical = 16, vbQuestion = 32, vbExplamation = 48, vbInformation = 64
ボタンの構成
アイコン
vbDefaultButton1 = 0, vbDefaultButton2=256, vbDefaultButton3=512
デフォルト
vbOK = 1, vbCancel = 2, vbYes = 6, vbNo = 7
押されたボタン
If MsgBox( "〜します", vbOKCancel, "タイトル" ) = vbCancel Then _
  WScript.Quit  1
(p264)
MsgBox "1" + Chr(13)+Chr(10) +"2"
複数行
MsgBox "〜しました。", vbOKOnly, "タイトル"
MsgBox は、CScript で実行しても、ウィンドウが表示されます。
WScript.Echo は、WScript ではウィンドウ表示、CScript では標準出力になります。
WScript.Echo "〜しました。"
〜しました。
または
(プロンプトへ)
vbSystemModal=4096
Shell::Popup
wscript.exe のとき
cscript.exe のとき
自動的に閉じるまでの時間を指定できる MsgBox です。
(p263)
s = InputBox( "入力してください", "タイトル", "デフォルト" )
キャンセルが押されたら、 s="" になります。
InputBox は、CScript で実行しても、ウィンドウが表示されます。
WScript.StdIn は、WScript ではエラーになります。CScript で実行してください。
Dim name

WScript.StdOut.Write "Enter your name: "
name = WScript.StdIn.ReadLine()
WScript.Echo "Hello, " & name & "!"
Enter your name: bob
Hello, bob , welcome!
WScript.StdIn
→ vbslib - input
サンプル (起動時に実行する内容の選択する)
Sub main()
  Dim  op

  If ArgumentExist( "menu1" ) Then
    op = 1
  ElseIf ArgumentExist( "menu2" ) Then
    op = 2
  Else
    op = InputBox( _
      "1. menu1" +vbCRLF+_
      "2. menu2",_
      WScript.ScriptName )
    If op = "" Then  WScript.Quit  1
    op = CInt( op )
  End If

  '// common functions

  Select Case op
    Case 1:  '// each functions
    Case 2:  '// each functions
  End Select
End Sub
参考
メモ帳を起動して、文字を入力するスクリプト
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "notepad.exe"
WScript.Sleep 500
objShell.SendKeys "hello"
→ キーボード
関連
スクリプトからカレントウィンドウにキーボード入力を送ることができます。
ただし、Sleep を使って、タイミングに気をつける必要があります。
Set  sh = WScript.CreateObject("WScript.Shell")

sh.AppActivate( "net Explorer" )  '(*1)
WScript.Sleep 500
sh.SendKeys "%F"
(*1) タイトル(前方一致または後方一致の部分文字列)
IE をアクティブにして、[ファイル] メニュうーを選択するスクリプト
→ SendInput
Sub  WshShell::SendKeys( keys as string )
キーボード操作をエミュレーションします。
【引数】
keys
アクティブウィンドウに送信するキーの内容
"+(EC)"
シフトキーを押しながら、E、C
"+EC"
シフトキーを押しながら、E、シフトキーを離して、C
"^C"
コントロールキーを押しながら C
"%FS"
Alt キーを押しながら F、離して S
"{ENTER}"
"{ESC}"
"{TAB}"
" " (空白文字)
keys に設定する値の例:
Dim g_sh : Set  g_sh = WScript.CreateObject( "WScript.Shell" )

Dim  player : Set player = CreateObject( "MediaPlayer.MediaPlayer" )
player.FileName = g_sh.ExpandEnvironmentStrings( "%windir%\Media\tada.wav" )
player.Play
While player.PlayState <> 0 : WScript.Sleep  300 : WEnd '// Wait for finish to play
→ システムの警告音 (SystemSound)
参考
→ 効果音や曲を鳴らす (SoundPlayer)
参考
Dim g_sh : Set  g_sh = WScript.CreateObject( "WScript.Shell" )

SystemSound ".Default"

Sub  SystemSound( Sound )
  Dim player : Set player = CreateObject( "WMPlayer.OCX" )
  player.Settings.Volume = 100
  player.URL = g_sh.ExpandEnvironmentStrings( g_sh.RegRead( _
    "HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\"+ Sound +"\.Current\" ) )
  player.Controls.Play
  While player.PlayState <> 1  '// Wait for finish to play
    WScript.Sleep  300
    If player.PlayState = 10 Then  Err.Raise 1,, "This is not sound file."
  WEnd
End Sub
Dim g_sh : Set  g_sh = WScript.CreateObject( "WScript.Shell" )

Dim  player : Set player = CreateObject( "WMPlayer.OCX" )
player.Settings.Volume = 100
player.URL = g_sh.ExpandEnvironmentStrings( "%windir%\Media\tada.wav" )
player.Controls.Play
While player.PlayState <> 1  '// Wait for finish to play
  WScript.Sleep  300
  If player.PlayState = 10 Then  Err.Raise 1,, "This is not sound file."
WEnd
(参考) 下記は、Play でエラーになる場合があります。
メディアプレイヤー 7 以降が必要
メディアプレイヤーの ActiveX を使います。
  If ... Then  WScript.Quit 1  ' Error

  WScript.Echo "Pass."
単純なテストスクリプトは、次のように記述し、標準出力を比較することで、
テストが正常かどうかを判定します。
関連
ただし、テスト項目が多くなってくると大変なので、vbslib にテストを自動化できる
ツールが用意されています。
関連
64ビットWindows には、32ビットWSH と 64ビットWSH の2種類が入っています。
64ビットWSH
64ビットWindows
32ビットWindows
32ビットWSH
%windir%\System32\cscript.exe
%windir%\SysWOW64\cscript.exe
%windir%\System32\cscript.exe
-
→ [x64] 64ビットWindows (WOW64)
参考
wscript.exe も同様です。 %windir% は通常 C:\Windows です。
Dim g_fs : Set g_fs = WScript.CreateObject( "Scripting.FileSystemObject" )
Dim path

If WScript.Arguments.Unnamed.Count <= 0 Then  path = "" _
Else  path = WScript.Arguments.Unnamed(0)
If path = "" Then WScript.Echo "変換するファイルをドラッグ&ドロップしてください。":WScript.Quit 1

cd  g_fs.GetParentFolderName( WScript.ScriptFullName ) '// change from system32 folder

Dim out_path
out_path = g_fs.GetParentFolderName( path ) +"\"+ g_fs.GetBaseName( path ) +"_replaced.xml"

Dim r : Set r = g_fs.OpenTextFile( path )
Dim w : Set w = g_fs.CreateTextFile( out_path, False, True )
下記のスクリプトで、path にドロップしたファイルのフル・パスが入ります。
ドラッグ&ドロップすると、カレントフォルダが、C:\Windows\System32 になり危険なので、上記のように
ドロップしたファイルが入っているフォルダを、カレントフォルダにします。
CScript sample.vbs param0 param1 ...
コマンドプロンプトからスクリプトに対してパラメータを渡すことができます。
スクリプトファイルにドラッグ&ドロップしたら、ドロップしたファイルパスがパラメータになります。
WScript.Arguments.Named.Item("debug")
cscript script.vbs /debug:1
名前付き引数の値を参照する
名前付き引数の指定方法
該当する名前の引数がないときは、Empty を返します。
Item は、デフォルト・プロパティなので、省略できます。
パラメータを渡す
  Set args = WScript.Arguments.Unnamed

  If args.Count = 0 Then  Err.Raise 1,,"ファイルをドロップしてください"

  For i=0 To  args.Count - 1
    WScript.Echo  args(i)
  Next
Set args = WScript.Arguments

For i = 0 to args.Count - 1
  WScript.Echo args(i)
Next
args( 0 ) が1つ目のパラメータです。
If WScript.Arguments.Count >= 1 Then
  s = WScript.Arguments(0)
End If
cscript script.vbs /path:"C:\Folder X\"
"" で囲むと空白を含めることができます
cscript script.vbs /flag
Empty を返します。(/flag が無いときと変わりません)
下記の
For Each key in WScript.Arguments.Named
  WScript.Echo  "/" + key + ":" + WScript.Arguments.Named.Item(key)
Next
名前付き引数の名前と値を一覧します。
Unnamed( ) の中の数値が、パラメータの数以上のときは、
Err.Number = 9 のエラーになります。
args( 0 ) が1つ目のパラメータです。
Unnamed( ) の中の数値が、パラメータの数以上のときは、
Err.Number = 9 のエラーになります。
If WScript.Arguments.Named.Exists( "Config" ) Then
オプションが指定されたかどうかの判定:
パラメータが /flag:1 でも /flag でも True を返します
で判定できます。
vbslib の ArrayClass を用いれば、引数の指定をエミュレーションできます。
WScript.Arguments.Unnamed(0)
デフォルト値に対応したオプションの取得:
  Dim  x
  config = "Default"
  x = WScript.Arguments.Named( "Config" ) : If not IsEmpty( x ) Then  config = x
/ から始まる Linux 形式のパスを、オプションではないパラメーターとするとき
を取得してください。
ユーザーは、/ から始まるオプションを、メイン・パラメータの後に指定してください。
  If WScript.Arguments.Unnamed.Count >= 1 Then
    input_path = WScript.Arguments.Unnamed(0)
  Else
    input_path = InputPath( "分割するファイル >",  )
  End If
\" \\\" \\\\\" \\"a > b" \\\\"c d"
\ \\\
\\\\\ \\a
b" \\\\"c
d
コマンドラインやバッチファイルに VBScript の引数を複数指定するときは、空白文字で区切ります。
  ・" " で囲むと空白文字を要素に含めることができます
  ・" " で囲んだ隣が空白文字でなければ、要素の続きになります
>
" 文字を、WScript.Argument に渡す
\'/Option\'
"/Option"
以下は、cmd.exe のコマンドラインと異なる、Shell::Run などに指定するコマンドラインについてです。
  ・" 文字を、WScript.Argument に渡すことはできません
  ・vbslib では、\' 文字を指定することで " 文字を渡すことができ、/ から始まる名前なし引数を
   渡すことができjます(下記リンク先を参照)
  ・\, ^, >, < 文字はエスケープ文字や特殊な機能を持つ文字ではありません
参考
WSH では変換されない
vbslib のみ。
ただし、vbslib では、特殊な形式で渡されれば、
で取得
できます。
Sub main()
  Dim  r, w, r_path, w_path, line

  If WScript.Arguments.Unnamed.Count < 1 Then
    echo "変換したいファイルをドラッグ&ドロップしてください。"
    Exit Sub
  End If

  r_path = WScript.Arguments.Unnamed(0)
  w_path = GetParentAbsPath( r_path ) +"\"+ g_fs.GetBaseName( r_path ) +".csv"

  Set r = g_fs.OpenTextFile( r_path )
  Set w = g_fs.CreateTextFile( w_path, True, False )

  Do Until r.AtEndOfStream
    line = r.ReadLine()

    '// ここに変換処理を記述する

    w.WriteLine  line
  Loop
End Sub
.csv
'// ここに変換処理を記述する
WScript.Quit  21
サブ・プロシージャの中で呼び出しても、プログラムは終了します。
WScript.exe, CScript.exe の返り値(エラーレベル)は、WScript.Quit で指定します。
WScript.Quit を呼ばないで終了した場合だけでなく、スクリプト内で例外が発生した場合も、
返り値は 0 になります。
cscript.exe  のパラメータに指定した VBS ファイルが見つからないときは、1 になります。
で起動したスクリプトは、返り値を取得できません。
または
を使ってスクリプトを起動してください。
関連
指定時間後も動いていたら、強制終了する
WScript.Timeout = 5  '//(sec)
WScript.exe a.vbs param1 ... ウィンドウ版
CScript.exe [//nologo] a.vbs param1 ... コンソール版
コマンドプロンプトから、
Set sh = WScript.CreateObject("WScript.Shell")
sh.Run "notepad.exe a.txt"
sh = Empty
WSH実用マニュアル[その他]
> によるリダイレクトはできません
vbs ファイルをダブルクリックしたら、cscript.exe を実行するようにエクスプローラーを設定しま
す。 右クリック・メニューには、「コマンドプロンプトで開く」 と表示されます。
cscript /H:cscript
cscript /H:wscript
vbs ファイルをダブルクリックしたら、wscript.exe を実行するようにエクスプローラーを設定しま
す。 右クリック・メニューには、「開く」 と表示されます。
← 管理者として実行したコマンド・プロンプトで入力してください
vbs ファイルに文法エラーがあったときに、エラーメッセージを確認できないため、
お勧めしません。
Dim g_sh : Set  g_sh = WScript.CreateObject( "WScript.Shell" )
Dim system32_path : system32_path = g_sh.ExpandEnvironmentStrings( "%windir%\system32" )

If LCase( Right( WScript.FullName, 11 ) ) = "wscript.exe" Then
  Dim  cmdline : cmdline = _
    system32_path+"\cmd /K cscript.exe //nologo """+WScript.ScriptFullName+""""
  For i=0 To WScript.Arguments.Count - 1
    If InStr( WScript.Arguments(i), " " ) = 0 Then _
          cmdline=cmdline+" "+WScript.Arguments(i) _
    Else  cmdline=cmdline+" """+WScript.Arguments(i)+""""
  Next
  CreateObject("WScript.Shell").Run  cmdline
  WScript.Quit  0
End If
パラメータがあるとき
Dim g_sh : Set  g_sh = WScript.CreateObject( "WScript.Shell" )
Dim system32_path : system32_path = g_sh.ExpandEnvironmentStrings( "%windir%\system32" )

If LCase( Right( WScript.FullName, 11 ) ) = "wscript.exe" Then
    CreateObject("WScript.Shell").Run _
        system32_path+"\cmd /K cscript.exe //nologo """+WScript.ScriptFullName+""""
    WScript.Quit  0
End If
パラメータがないとき
実行後にコマンドプロンプトを閉じるときは、Run のパラメーターに "&exit" を追加してください。
デバッガを起動するときは、Run のパラメーターに //x を追加してください。
関連
Set g_sh = WScript.CreateObject( "WScript.Shell" )

If g_sh.ExpandEnvironmentStrings( "%ProgramFiles(x86)%" ) = "%ProgramFiles(x86)%" Then
    If LCase( Right( WScript.FullName, 11 ) ) = "wscript.exe" Then _
        g_restart_cmd_exe = "%windir%\system32\cmd"  '// For 32bit Windows
Else
    If LCase( Right( WScript.FullName, 11 ) ) = "wscript.exe"  or _
       LCase( Right( WScript.FullName, 20 ) ) = "system32\cscript.exe" Then _
        g_restart_cmd_exe = "%windir%\SysWOW64\cmd"  '// 32bit cmd.exe for 64bit Windows
End If
If not IsEmpty( g_restart_cmd_exe ) Then
    g_sh.Run  g_sh.ExpandEnvironmentStrings( g_restart_cmd_exe )+_
        " /K cscript.exe //nologo """+ WScript.ScriptFullName +""""
    WScript.Quit  0
End If

WScript.Echo  WScript.FullName
64bit Windows でも 32bit cmd,exe を起動し、パラメータがないとき
参考