Tech-Ezo (Hokkaido PC and Network Users Group)
 Top Page  |  What's Tech-Ezo  |  Next Seminar  |  Seminar Log  |  Seminar Plan  |  Tips  |  life  |  Link  |
Scr.002 逆引きWSH(VBScript)サンプル集 − 基本編(001〜010)
[WSHサンプル集へ戻る]

■ 基本編(001〜010)

■ WSH.001 変数に使用できる文字 戻る

 VBScriptでの変数のネーミングルールは下記のようになっている。

  • 英数字とアンダーバーのみ
  • 変数名の先頭は英文字
  • 長さは255文字まで
  • 大文字/小文字は区別されない

 よって、「TechEzo2003」や「TechEzo_2003」は利用できるが、「TechEzo#2003」や「2003TechEzo」などは利用できない。また、「TechEzo2003」と「techezo2003」は同じものとして扱われる。



■ WSH.002 変数の扱い 戻る

 VBScriptの変数は全てバリアント型になっており、使用に際しての宣言は不要である。しかしながら、デバックの利便性から定義を強制することも可能となっている(Option Explicit を記述)。

■ 変数の扱い
  • 基本的に定義は不要
  • 定義を強制したければ Option Explicit を記述する
  • 定義する場合には Dim 文を使用する
  • 変数はすべてバリアント型
  • 文字列定数はダブルクォーテーションで括る必要がある。

■ コーディング例

Option Explicit
Dim msg
msg = "TechEzo 2003 Round 23"
WScript.Echo msg


■ WSH.003 コメント(VBScript) 戻る

 スクリプト中にコメントを入れたい場合にはシングルクォーテーション(')を使用する。

■コーディング例

' **************************************************
'  TechEzo 2003 Round 23 sample program
' --------------------------------------------------
'  tomo_c@sapporo / 2004.2.25
' --------------------------------------------------

Option Explicit
Dim msg
msg = "TechEzo 2003 Round 23"
WScript.Echo msg           ' メッセージ出力


■ WSH.004 演算子 戻る

 各種の計算や条件判定に使う演算子を以下に列挙します。

■ 算術演算子

記号 意味 使用例
^ 指数演算 ans = 2 ^ 3 (ans → 8)
- マイナス符号 ans = -1 (ans → -1)
* 乗算 ans = 2 * 3 (ans → 6)
/ 除算 ans = 3 / 2 (ans → 1.5)
\ 整数除算 ans = 5 \ 3 (ans → 1)
Mod 剰余 ans = 5 Mod 3 (ans → 2)
+ 加算 ans = 2 + 3 (ans → 5)
- 減算 ans = 3 - 2 (ans → 1)
& 文字列連結 str = "Tech" & "Ezo" (str → "TechEzo")

■ 代入演算子

記号 意味 使用例
= 代入演算子 beer = 5

■ 比較演算子

記号 意味 使用例
< より小さい If x %lt; 5 Then ...
<= 以下 If x %lt;= 5 Then ...
> より大きい If x %gt; 5 Then ...
>= 以上 If x %gt;= 5 Then ...
= 等しい If x = 5 Then ...
<> 等しくない If x <> 5 Then ...

■ 論理演算子

記号 意味 使用例
And 論理積 If x = 1 And y = 1 Then ...
Not 論理否定 If Not (x > 5) Then ...
Or 論理和 If x = 1 Or y = 1 Then ...
Xor 排他的論理和 If x = 1 Xor y = 1 Then ...


■ WSH.005 文字列の入力 戻る

 スクリプトからユーザーにデータ入力を促す方法として簡単なものとしては、下記のようにダイヤログボックスを利用する方法と、コマンドライン実行時の標準入力から入力する方法が考えれます。

■ダイヤログボックスからの入力例

str = InputBox("合い言葉は?")
WScript.Echo str

■ダイヤログボックスからの入力例

Set StdIn = Wscript.StdIn
WScript.Echo "合い言葉は?"
str = StdIn.ReadLine
WScript.Echo str

[実行例]
C:\>cscript //nologo input_test.vbs
合い言葉は?
へそっ!            ← 入力した値
へそっ!


■ WSH.006 判断(If文) 戻る

 判断(条件判定)による処理の2分岐は下記のように記述します。

■ビールを5缶以上飲んでいたら注意する

If Beer >= 5 Then
    WScript.Echo "飲み過ぎっすよまささん"
Else
    WScript.Echo "今日は体調不良ですか?まささん"
End If


■ WSH.007 選択(Select文) 戻る

 選択による処理の多分岐は下記のように記述します。

■血液型でメッセージを変える

Select Case bloodType
    Case  "A"
        WScript.Echo "几帳面かもね"
    Case  "B"
        WScript.Echo "マイペースかもね"
    Case  "O"
        WScript.Echo "大ざっぱかもね"
    Case  "AB"
        WScript.Echo "ミステリアスな雰囲気かもね"
    Case Else
        WScript.Echo "か。。かなり珍しいですね"
End Select


■ WSH.008 ループ1(Do文) 戻る

 繰り返し(ループ)処理のサンプルを下記に示します。

■無限ループ

Do
    WScript.Echo "とまんねー"
Loop

※無限ループの止め方
・cscriptで実行したときは[Ctrl]+[C]で止めます。
・wscriptで実行したときはタスクマネージャーで止めます。

■10回繰り返したら抜ける(カウンターが10を越えたら抜ける)

i=1
Do
    WScript.Echo "とまんねー"
    i = i + 1
    If i > 10 Then Exit Do
Loop
Wscript.Echo "ふぅ、止まった"

※このパターンはFor文を使った方が楽です。

■10回繰り返したら抜ける(カウンターが10以下の間処理を続ける)

i = 1
Do while i <= 10
    WScript.Echo i
Loop

※このパターンはFor文を使った方が楽です。

■フラグがたったらやめる

Flg = 0
Do Until Flg = 1
    〜
Loop

■最初に1回は回る

Flg = 0
Do
    〜
Loop Until Flg = 1


■ WSH.009 ループ2(For文) 戻る

 1〜10までのカウントなど、数値を変化させながら処理する場合にはFor文が便利です。

■1〜5まで表示する

For i=1 To 5
    WScript.Echo i
Next

[実行例]
実行結果
C:\> cscript //nologo fortest.vbs
1
2
3
4
5

■10〜1まで2ずつカウントダウンする

For i=10 To 1 Step -2
    WScript.Echo i
Next

[実行例]
C:\> cscript //nologo fortest2.vbs
10
8
6
4
2


■ WSH.010 ループ3(For Each文) 戻る

 For Each文はコレクションや配列の各要素を変数に格納しながらぐるぐる回ります。

■[コレクションの例]フォルダ内にあるファイル名を表示する

Set fso = CreateObject("Scripting.FileSystemObject")
Set fn = fso.GetFolder("c:\")
Set fc = fn.Files
For Each FileName in fc
    WScript.Echo FileName
Next

[実行例]
実行結果
C:\> cscript //nologo looptest1.vbs
C:\ntldr
C:\bootfont.bin
C:\NTDETECT.COM
C:\boot.ini
C:\CONFIG.SYS
C:\AUTOEXEC.BAT
C:\IO.SYS
〜

■[配列の例]配列の各要素を表示する

Dim str(4)
str(0) = "Tech"
str(1) = "Ezo"
str(2) = "Round"
str(3) = "23"

For Each i In str
  Wscript.Echo i
Next

[実行例]
C:\> cscript //nologo looptest2.vbs
Tech
Ezo
Round
23

[WSHサンプル集へ戻る]

-
※全ては自己責任でお願いします。 最終更新日 2004.3.4