jscript と vbscript

  1. サイトのトップ
  2. > 一般教養 と ネタ
  3. > [j|vb]script

  1. ページ内ナビゲーション
  2. ページのトップ
  3. ms製スクリプトが二種類あるメリット
  1. 相違点1
  2. 相違点2-1(jscriptの正規表現)
  3. 相違点2-2(vbscriptの正規表現)
  1. vbsスニペット
  2. ページの末尾

jscriptとは、javascriptもどきのms謹製スクリプト。
vbscriptとは、vbもどきのms謹製スクリプト。
2010/07/29 スニペット追記

ms製スクリプトが二種類あるメリット

(特に)メンテナンス時や、(稀に)作成時に、
どの言語を使っているか分らなくなり、
容易かつ速やかに混乱する事が出来る。
例えば、互いの構文、メソッドなどを混在して用いて、
意味不明なエラーメッセージに苦しむ事が出来る。

相違点1

jscript

・行末記号としてセミコロンが必要
・コメントはダブルスラッシュ

vbscript

・行末記号は不要
・コメントはシングルクォート

相違点2-1(jscriptの正規表現)

var re, p, q, r, s;
s = "The quick brown fox jumps over the lazy dog"; // 対象文字列
p = "fox"; // 検索文字列
q = "rat"; // 置換文字列

re = new RegExp(p,["flag"]) ; // 正規表現作成
r = s.match(re); // 検索(返値はnullか配列)
r = s.replace(re, q); // 置換(返値は置換後文字列)
// replaceはstringオブジェクトのメソッド

flag:
g グローバル検索する(しない)
i 大小文字区別しない(する)
m 複数行検索する(しない)


対象文字列内に、検索文字列が不在の場合、
";が無い"といったエラーを、検索文字列定義行で返す?

相違点2-2(vbscriptの正規表現)

Dim re, p, q, r, s
s = "The quick brown fox jumps over the lazy dog" ' 対象文字列
p = "fox" ' 検索文字列
q = "rat" ' 置換文字列

Set re = New RegExp ' 正規表現作成
re.Pattern = p ' パターン設定
re.Global = True ' 文字列全体を検索
re.IgnoreCase = True ' 大小文字区別しない

Set r = re.Execute(s) ' 検索(返値はmatchesコレクション)
r = re.Replace(s, q) ' 置換(返値は置換後文字列)
' replaceはRegExpオブジェクトのメソッド

対象文字列内に、検索文字列が不在の場合、
空のmatchesコレクションを返す。

vbsスニペット

高度なテクとか期待してはいけません。
どっちかつぅと「等号を二つも並べんな、タコ!」とか、
「if文やfor文の書き方も分からんのか、ボケ!」とか
「馬鹿め! switch文は死んだわ」みたいなメッセージに
心が折れた人のための、癒しのサンプルコードです。
難しいことなんか、してませんから><

001 rem #############################################
002 rem vbs スニペット
003 rem #############################################
004 rem 変数は定義すれ
005 Option Explicit
006
007
008 rem 変数・定数定義
009 Dim intVal
010 Const ZERO = 0
011 intVal = ZERO
012
013 Dim strMsg, strTitle
014 Dim aryNum(9)
015 rem aryNum(0) .. aryNum(9)
016
017
018 strTitle = "vbs If文"
019 If intVal = 0 Then
020    strMsg = "等値判定子は等号がいっこ"
021 Else
022    strMsg = "不等判定子は<>"
023 End If
024 MsgBox strMsg, vbOKOnly, strTitle
025
026
027 strTitle = "vbs Select Case文"
028 Select Case intVal
029    Case 0
030      strMsg = "switch じゃないので注意"
031    Case 1
032      strMsg = "break しなくても以降の Case はパスする"
033    Case Else
034      strMsg = "default じゃないので注意"
035 End Select
036 MsgBox strMsg, vbOKOnly, strTitle
037
038
039 strTitle = "vbs For文"
040 For intVal = 0 to 4 step 2
041    strMsg = intVal / 2 + 1 & "回目 のループ"
042    MsgBox strMsg, vbOKOnly, strTitle
043    Exit For
044 Next
045
046
047 strTitle = "vbs Doループ 1"
048 Do While intVal > 0
049    strMsg = "While の前に Do 必須"
050    strMsg = strMsg & vbCrLf & "今の値は " & intVal
051    MsgBox strMsg, vbOKOnly, strTitle
052    Exit Do
053 Loop
054
055
056 strTitle = "vbs Doループ 2"
057 Do
058    intVal = intVal + 1
059    strMsg = "While の前に Loop 必須"
060    strMsg = strMsg & vbCrLf & "今の値は " & intVal
061    MsgBox strMsg, vbOKOnly, strTitle
062 Loop While intVal < 2
063
064
065 strTitle = "vbs 鉄の掟"
066 strMsg = "剰余は'Mod'、階乗は'^'、 論理演算は'And','Or','Not'"
067 MsgBox strMsg, vbOKOnly, strTitle
068
069
070 rem vbs File Write
071 Dim strFileName, FileSystemObj, FileStreamOut
072 Const OVERWRITE = True
073 Const KEEPORIG = False
074 strFileName = "c:\temp\temp.txt"
075 Set FileSystemObj = CreateObject("Scripting.FileSystemObject")
076
077 On Error Resume Next
078    Set FileStreamOut = FileSystemObj.CreateTextFile(strFileName, KEEPORIG)
079    If Err.Number <> 0 Then
080      If MsgBox("既存ファイル上書?", vbOKCancel) = vbOK Then
081        Set FileStreamOut = FileSystemObj.CreateTextFile(strFileName, OVERWRITE)
082      Else
083        WScript.Quit
084      End If
085      Err.Clear
086    End If
087 On Error GoTo 0
088
089 FileStreamOut.WriteLine( "Date : " & Date )
090 FileStreamOut.WriteLine( "Now : " & Now )
091 FileStreamOut.Close
092
093
094 strTitle = "vbs File Read"
095 Dim FileStreamIn
096 Const FORREADING = 1
097
098 Set FileStreamIn = FileSystemObj.OpenTextFile(strFileName, FORREADING)
099 strMsg = FileStreamIn.ReadLine()
100 Do While FileStreamIn.AtEndOfLine <> True
101    strMsg = strMsg & vbCrLf & FileStreamIn.ReadLine()
102 Loop
103 FileStreamIn.Close
104 MsgBox strMsg, vbOKOnly, strTitle
105
106
107 strTitle = "vbs re search"
108 Dim re, SourceText, SearchPattern, SearchResult, ResultMatch
109 SourceText = "The quick brown fox jumps over the lazy dog"
110 rem SearchPattern = "the"
111 SearchPattern = "thexxx"
112 strMsg = "Source : " & SourceText
113 strMsg = strMsg & vbCrLf & "search : " & SearchPattern
114
115 Set re = New RegExp
116 re.Pattern = SearchPattern
117 re.Global = True
118 re.IgnoreCase = True
119
120 Set SearchResult = re.Execute( SourceText )
121 strMsg = strMsg & vbCrLf & "Count : " & SearchResult.Count
122 For Each ResultMatch in SearchResult
123    strMsg = strMsg & vbCrLf & "pos : " & ResultMatch.FirstIndex
124    strMsg = strMsg & " / txt : " & ResultMatch.Value
125 Next
126 MsgBox strMsg, vbOKOnly, strTitle
127
128
129 strTitle = "vbs re Replace"
130 Dim ReplaceText, ReplaceResult
131 SourceText = "The quick brown fox jumps over the lazy dog"
132 SearchPattern = "fox"
133 ReplaceText = "rat"
134
135 re.Pattern = SearchPattern
136 re.Global = True
137 re.IgnoreCase = True
138
139 ReplaceResult = re.Replace( SourceText, ReplaceText )
140 strMsg = "Source : " & SourceText
141 strMsg = strMsg & vbCrLf & "search : " & SearchPattern
142 strMsg = strMsg & vbCrLf & "Replace : " & ReplaceText
143 strMsg = strMsg & vbCrLf & "result : " & ReplaceResult
144 MsgBox strMsg, vbOKOnly, strTitle
145
146 rem #############################################
147 rem End of vbs スニペット
148 rem #############################################

  1. ページ内ナビゲーション
  2. ページのトップ
  3. ms製スクリプトが二種類あるメリット
  1. 相違点1
  2. 相違点2-1(jscriptの正規表現)
  3. 相違点2-2(vbscriptの正規表現)
  1. vbsスニペット
  2. ページの末尾

  1. サイト内ナビゲーション
  2. サイトのトップ
  3. ロト6
  4. ミニロト
  1. コンソールユーティリティ
  2. りんくす
  3. ぶいあい
  1. グラフィックユーティリティ
  2. smoothdraw
  3. gimp
  1. だたばせ と 表計算
  2. sql
  3. 表計算
  4. imemo
  1. 一般教養 と ネタ
  2. 正規表現
  3. 度量衡換算表
  4. [j|vb]script
  5. 一発芸(なんちゃら2.x)
  6. 三角関数
  1. その他
  2. PDFmyURL 簡易リファレンス
  3. オペラ・ウィジェット

inserted by FC2 system