2016年8月29日 星期一

Microsoft VBScript

Microsoft VBScript
from my MSDN blog - August 29, 2016

Quick Start:

VBScript Operators
https://msdn.microsoft.com/en-us/library/9da4s2eh(v=vs.84).aspx

 ' default value of variable is "" or Empty or 0
Dim p1
If p1 = "" Then
 Wscript.Echo "p1="""""
End If

If p1 = 0 Then
 Wscript.Echo "p1=0"
End If

If isEmpty(p1) Then
 Wscript.Echo "isEmpty(p1)"
End If

' default value is not null
If isNull(p1) Then
 Wscript.Echo "isNull(p1)"
End If

Constant  Value            Description
----------------------------------------------------------------
vbCr     Chr(13)                      Carriage return
vbCrLf   Chr(13)& Chr(10)  Carriage return–linefeed combination
vbLf     Chr(10)                      Line feed

  • vbCr : - return to line beginning
    Represents a carriage-return character for print and display functions.
  • vbCrLf : - similar to pressing Enter
    Represents a carriage-return character combined with a linefeed character for print and display functions.
  • vbLf : - go to next line
    Represents a linefeed character for print and display functions.

 ' String
strMyString = "Line1"
strMyString = strMyString & vbNewLine
strMyString = strMyString & "Line2"
strMyString = strMyString & vbCr & vbLf
strMyString = strMyString & "Line3"
strMyString = strMyString & vbCrLf
strMyString = strMyString & "Line4"

 ' Date
Dim dteExpiredDate
    dteExpiredDate = "2008/12/31"
    dteExpiredDate = #2008/12/31#              

'Time
Now()
Time()
Hour(Now())
Minute(Now())
Second(Now())

 ' Constants
Const COMP_NAME = "Microsoft"
Const LOCATION = "Taiwan"

 '  Intrinsic Constants (Build-in Constants)
FormatDateTime(Now(),vbShortDate)
FormatDateTime(Now(),vbLongDate)
FormatDateTime(Now(),vbShortTime)
FormatDateTime(Now(),vbLongTime)

 ' Buildin Datediff Function
DateDiff("d", Now, "2008/05/30")

 ' Buildin String Function
strMyString = "This is a book."
WScript.Echo "Upper Case : " & UCase(strMyString)
WScript.Echo "Lower Case : " & LCase(strMyString)

LEN(strMyString)
Left(strMyString,4)
Right(strMyString,5)
InStr(strMyString,"is")
InStr(4,strMyString,"is")

 ' Round 
Randomize
vRnd = Rnd * 100
WScript.Echo "vRnd : " & vRnd
WScript.Echo "Round(vRnd) : " & Round(vRnd)

 'Conversion Functions
'CInt
Dim MyDouble, MyInt, MyByte, MyString, MyVal1, MyVal2, MyLong1, MyLong2
MyDouble = 2345.5678     ' MyDouble is a Double.
MyInt = CInt(MyDouble)   ' MyInt contains 2346.

 'CBytes
MyDouble = 125.5678        ' MyDouble is a Double.
MyByte = CByte(MyDouble)   ' MyByte contains 126.

 'CStr
MyDouble = 437.324         ' MyDouble is a Double.
MyString = CStr(MyDouble)   ' MyString contains "437.324".

 'CLng
MyVal1 = 25427.45: MyVal2 = 25427.55   ' MyVal1, MyVal2 are Doubles.
MyLong1 = CLng(MyVal1)   ' MyLong1 contains 25427.
MyLong2 = CLng(MyVal2)   ' MyLong2 contains 25428.


Using Conditional Statements

 ' If Then Else
'    Dim myDate
    myDate = #2/13/95#
    If myDate < Now Then myDate = Now

   If value = 0 Then
      WScript.Echo "value=0"
   ElseIf value = 1 Then
      WScript.Echo "value=1"
   Else
      WScript.Echo "Value out of range!"
   End If

MyVar = 2
Select Case MyVar
 Case "0"
  WScript.Echo "MyVar = 0"
 Case "1"
  WScript.Echo "MyVar = 1"
 Case "2"
  WScript.Echo "MyVar = 2"
 Case Else
  WScript.Echo "Sorry value is out of range"
End Select

Looping Through Code

    For j = 2 To 10 Step 2
      total = total + j
   Next
   For myNum = 16 To 2 Step -2
      total = total + myNum
   Next
   Do While myNum2 > 10
      myNum2 = myNum2 - 1
      counter = counter + 1
   Loop
   Do Until myNum3 = 1
      myNum3 = myNum3 - 1
      counter2 = counter2 + 1
      If myNum3 < 3 Then Exit Do
   Loop
   Set d = CreateObject("Scripting.Dictionary")
   d.Add "0", "Athens"   'Add some keys and items
   d.Add "1", "Belgrade"
   d.Add "2", "Cairo"

   For Each I in d
      WScript.Echo "D.Item(" & I & ") : " & d.Item(I)
   Next

 'Array & Dynamic Array
'== 1 Dimension Array ==
Dim Names(9)       ' Declare an array with 10 elements.

'== 2 Dimension Array ==
Dim aryTwoDimension(2,2)

Dim aryTripleDimension
aryTripleDimension = Array(10,20,30)
B = aryTripleDimension(2)   ' B is now 30.

'== Dynamic Array ==
Dim NumArray()
Dim DynamicArray()      ' Declare a dynamic array.
ReDim DynamicArray(9)   ' Allocate storage space.
ReDim Preserve DynamicArray(10)   ' Allocate storage space.

'== Erase Array ==
Erase NumArray          ' Each element is reinitialized.
Erase DynamicArray      ' Free memory used by array.

'== Ubound Function ==
Dim A(100,3,4)
WScript.Echo "UBound(A, 1) : " & UBound(A, 1)
WScript.Echo "UBound(A, 2) : " & UBound(A, 2)
WScript.Echo "UBound(A, 3) : " & UBound(A, 3)

'== Split ==
Dim MyString, MyArray, Msg
MyString = "VBScriptXisXfun!"
MyArray = Split(MyString, "x", -1, 1)
' MyArray(0) contains "VBScript".
' MyArray(1) contains "is".
' MyArray(2) contains "fun!".
Msg = MyArray(0) & " " & MyArray(1)
Msg = Msg   & " " & MyArray(2)
WScript.Echo Msg

'== Is Array ==
Dim MyVariable
Dim MyArray5(3)
MyArray5(0) = "Sunday"
MyArray5(1) = "Monday"
MyArray5(2) = "Tuesday"
MyVariable = IsArray(MyArray5) ' MyVariable contains "True".
WScript.Echo "MyVariable : " & MyVariable

Sub Procedures

Sub Procedures
 Sub ConvertTemp
   temp = InputBox("Please enter the temperature in degrees F.", 1)
   MsgBox "The temperature is " & Celsius(temp) & " degrees C."
End Sub


Function Procedures

 Sub ConvertTemp
   temp = InputBox("Please enter the temperature in degrees F.", 1)
   MsgBox "The temperature is " & Celsius(temp) & " degrees C."
End Sub

Function Celsius(fDegrees)
   Celsius = (fDegrees - 32) * 5 / 9
End Function

 '== Pass array parameter ==
Dim aryDemo(2)
 aryDemo(0) = 1
 aryDemo(1) = 2
 aryDemo(2) = 3

Call PrintArray(aryDemo)

Sub PrintArray(aryParameter)
 
 Dim i
 For i=0 To UBound(aryParameter)
  WScript.Echo "Array(" & i & ") Value Is : " & aryParameter(i)
 Next
 
End Sub

 '== Pass Object parameter ==
' List Items in the My Computer Folder
Const MY_COMPUTER = &H11&

Set objShell = CreateObject("Shell.Application")

Call ListItemInMyComputer(objShell)

Sub ListItemInMyComputer(objShellObject)

 Set objFolder = objShellObject.Namespace(MY_COMPUTER)
 Set objFolderItem = objFolder.Self
  WScript.Echo objFolderItem.Path
 
 Set colItems = objFolder.Items
 For Each objItem in colItems
     Wscript.Echo objItem.Name
 Next
 
End Sub

Set objShell = Nothing

Sub TestSub(ByRef MyParam) 
    MyParam = 5
End Sub

Dim MyArg 
MyArg = 123

TestSub MyArg
' MyArg in changed in TestSub to 5.

Sub TestSub(ByVal MyParam) 
    MyParam = 5
End Sub

Dim MyArg 
MyArg = 123
TestSub MyArg
' MyArg is still 123.


更多ByRef,ByVal用法請參考
ByRef and ByVal Parameters
https://msdn.microsoft.com/en-us/library/ee478101(v=vs.84).aspx

Error handling
To Err Is VBScript – Part 1
https://technet.microsoft.com/en-us/library/ee692852.aspx

 On Error Resume Next
strComputer = "fictional"
strPrinter = "TestPrinter"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
If Err = 0 Then
    WScript.Echo "No error binding to " & strComputer
    strPrinter = "TestPrinter"
    Set objPrinter = objWMIService.Get _
      ("Win32_Printer.Name='" & strPrinter & "'")
    If Err = 0 Then
        WScript.Echo "No error connecting to " & strPrinter
    Else
        DisplayErrorInfo
    End If
Else
    DisplayErrorInfo
End If

'******************************************************************************

Sub DisplayErrorInfo

    WScript.Echo "Error:      : " & Err
    WScript.Echo "Error (hex) : &H" & Hex(Err)
    WScript.Echo "Source      : " & Err.Source
    WScript.Echo "Description : " & Err.Description
    Err.Clear

End Sub


VBScript:

Script Center > Learn > Learn Beginning Scripting

Class is in Session

Scripting Guide

Overview

Introduction

Document Conventions

Support Policy

Scripting Concepts and Technologies for System Administration

Scripting Solutions for System Administration

Scripting for the Enterprise

Download Documents or Tools

VBScript Constants

VBScript Common Constants

VBScript Template

Template - Sample

Security:

vbe file

Script Encoder Overview (Script Encoder is not supported in Windows Vista or Windows 7)

  SCRENC [/s] [/f] [/xl] [/l defLanguage ] [ /e defExtension] input file output file

Script Encoder , Script Encoder

Encode a Script

Encode and Decode a VB script

HTML Applications (HTAs):

Calendar Control Reference

Creating Your Own HTAs - Try It Yourself: Add a Multi-Line Text Box to an HTA

Creating Your Own HTAs - Try It Yourself: Add Radio Buttons to an HTA

Creating Your Own HTAs - Try It Yourself: Add a Button to an HTA

Creating Your Own HTAs - Try It Yourself: Add a Check Box to an HTA

Creating Your Own HTAs - Try It Yourself: Add a Drop-down List Box to an HTA

Creating Your Own HTAs - Try It Yourself: Add a List Box to an HTA

Creating Your Own HTAs - Try It Yourself: Add a Multi-select List Box to an HTA

Creating Your Own HTAs - Try It Yourself: Add a Password Box to an HTA

Creating Your Own HTAs - Try It Yourself: Add a Subroutine to an HTA

Creating Your Own HTAs - Try It Yourself: Add a Text Box to an HTA

Creating Your Own HTAs - Try It Yourself: Display Process Names and IDs in an HTA

Creating Your Own HTAs - Try It Yourself: Write Data to a <span>

Extreme Makeover, Part 2: Wrap Your Scripts Up in a GUI Interface

Extreme Makeover: Wrap Your Scripts Up in a GUI Interface

The ABCs of HTAs Archive

The ABCs of HTAs: Scripting HTML Applications - Add Color Options to a List Box

The ABCs of HTAs: Scripting HTML Applications - Add a Gradient Background to Your HTAs

The ABCs of HTAs: Scripting HTML Applications - AutoRefresh an HTA Using a Timer

The ABCs of HTAs: Scripting HTML Applications - Create an HTA Without a Title Bar

The ABCs of HTAs: Scripting HTML Applications - Run a Script from a Text Link

The ABCs of HTAs: Scripting HTML Applications - Use a File Open Dialog Box to Populate a List Box (Windows XP-only)

 

Development Tools for VBScript:

  • Visual Studio
  • Notepad
  • Notepad++ (Third-Party)
  • UltraEdit (Third-Party)
  • VbsEdit (Third-Party)
  • Admin Script Editor (Third-Party)

Code Auto Generator:




沒有留言:

SQL Server Planning, Pricing and License

  Server-CALs授權模式 1.需購買的量應該是所有終端用戶的電腦 例如:一台Data warehouse主機 與 一台Web報表主機,但公司有50人或電腦會連進Web報表主機開啟報表,則應該每一台用戶端電腦都需要有CALs授權,Data warehouse主機購買Ser...