WSH - 基礎

実行

  • WScriptは対話向け
(例)wscript test.vbs
  • CScriptはコンソール向け
(例)cscript test.vbs

スクリプト基礎

'---------------------------------------- 暗黙の宣言を許可しない
Option Explicit 	

'---- 定数
WScript.Echo "定数"
Public Const MAX_COUNT = 10
WScript.Echo MAX_COUNT

'---- 変数、(dim、public、private)
WScript.Echo "変数、(dim、public、private)"
Dim a,b
a=100
b=200
WScript.Echo a+b 

'---- Subプロシージャの引数はデフォルト参照渡し、明示的に値渡し、参照渡しを設定可能
'---- SUBプロシージャ、引数はデフォルト参照渡し
WScript.Echo "SUBプロシージャ、引数はデフォルト参照渡し"
Sub sSample1(i,j)
	a=i
	b=j
	WScript.Echo a+b 
End Sub

Call sSample1(10,20)

'---- SUBプロシージャ、明示的に参照渡し
WScript.Echo "SUBプロシージャ、明示的に参照渡し"
Sub sSample2(Byref i,j)
	i = i*j
End Sub

Private c
c=10
Call sSample2(c,20)
WScript.Echo c

'---- SUBプロシージャ、明示的に値渡し
WScript.Echo "SUBプロシージャ、明示的に値渡し"
Sub sSample3(ByVal i,j)
	i = i*j
End Sub

Private d
d=10
Call sSample3(d,20)
WScript.Echo d

'---- Functionの引数はデフォルト参照渡し、明示的に値渡し、参照渡しを設定可能
'---- Functionプロシージャ、引数はデフォルト参照渡し
WScript.Echo "Functionプロシージャ、引数はデフォルト参照渡し"
Function fSample1(i,j)
	fSample1 = i+j
End Function

WScript.Echo fSample1(1,2)

'---- Classを宣言
WScript.Echo "Classを宣言"
Class SampleClass
	Public Sub Sample(i,j)
		WScript.Echo i * j 
	End Sub
	
	Public Function Sample2(i,j)
		Sample2 = i*j
	End  Function
End Class

Private sc
Set sc = New SampleClass
sc.Sample 100,30	'←括弧は使用できない
WScript.Echo sc.Sample2(10,20)
 Set sc = Nothing

'---- Propertyプロシージャ、設定と取得
WScript.Echo "Propertyプロシージャ、設定と取得"
Class SampleClass2
	Private s
	
	Public Property Get WshShell()
		Set WshShell = s	
	End Property
	
	Public Property Set WshShell(Arg)
		Set s = Arg	 
	End Property
	
	Private Sub Terminate()
		Set s = Nothing
	End Sub
End Class

Private pc
Set pc = New SampleClass2
Set pc.WshShell = CreateObject("WScript.Shell")  
WScript.Echo pc.WshShell.SpecialFolders("Desktop")
Set pc = Nothing

'---- 配列
WScript.Echo "配列"
Dim TestArray(3)
TestArray(0) = 0
TestArray(1) = 1
TestArray(2) = 2
TestArray(3) = 3
WScript.Echo TestArray(2)

'---- 動的配列
WScript.Echo "動的配列"
Private TestArrayA()
ReDim TestArrayA(3)
TestArrayA(0) = 0
TestArrayA(1) = 1
TestArrayA(2) = 2
TestArrayA(3) = 3
WScript.Echo "----"
Private i
For i = 0 To UBound(TestArrayA)-1
	WScript.Echo TestArrayA(i)
Next

WScript.Echo "----"
WScript.Echo UBound(TestArrayA)
WScript.Echo "----"

Private x
For Each x In TestArrayA
	WScript.Echo x
Next
WScript.Echo "----"

ReDim Preserve TestArrayA(6)
TestArrayA(4) = 4
TestArrayA(5) = 5

For Each x In TestArrayA
	WScript.Echo x
Next
WScript.Echo "----"

'---- プロシージャから抜ける(Sub、Function、Property)
WScript.Echo "プロシージャから抜ける(Sub、Function、Property)"
Private Function ExitSample(a)
	ExitSample = False
	
	If a  < 100 Then
		Exit Function
	Else 
	
	ExitSample = True
		
	End If
End Function

If ExitSample(50) Then
	WScript.Echo "true"
Else 
	WScript.Echo "false"
End If

'---- If Then 〜 Else 〜 End If
WScript.Echo "If Then 〜 Else 〜 End If"
Private t 
t = Time()
If t < TimeValue("12:00:00") Then
	WScript.Echo "AM-" & t  
Else 
	WScript.Echo "PM-" & CDate(t - TimeValue("12:00:00"))
End If

'---- Select case
WScript.Echo "Select case"
t = Time()
WScript.Echo "now time - "& t
Select Case Hour(t)
	Case 1,2,3,4,5,6,7,8,9
		WScript.Echo "sleeping"
	Case Else
		WScript.Echo "wakeup"
End Select

'----For〜Next
WScript.Echo "For〜Next"
Private loop1

For loop1 = 0 To 10-1
	WScript.Echo loop1
Next

'----For Each〜Next
WScript.Echo "For Each〜Next"
Private TestArrayB(5)
TestArrayB(0) = 1
TestArrayB(1) = 2
TestArrayB(2) = 3
TestArrayB(3) = 4
TestArrayB(4) = 5
TestArrayB(5) = 6

Dim xx
For Each xx In  TestArrayB
	WScript.Echo xx
Next

'----While〜Wend
WScript.Echo "While〜Wend"
Private count
count=0
While count < 10
	WScript.Echo count
	count = count + 1
Wend

'----Do〜Loop While
WScript.Echo "Do〜Loop While"
Private count2
count2=0
Do 
	WScript.Echo count2
	count2 = count2 + 1
Loop While count2 < 10

'----Exit Do
WScript.Echo "Exit Do"
Private count3
count3 = 0
Do 
	count3 = count3 + 1 
	WScript.Echo count3
	If count3 > 4 Then 
		Exit Do
	End If
Loop 

'----Exit For
WScript.Echo "Exit For"
Private loop2
For loop2=0 To 10
	WScript.Echo loop2
	If loop2 > 4 Then 
		Exit For
	End If
Next