75
Windows Scripting Host Windows Scripting Host

Windows Scripting Host

  • Upload
    meli

  • View
    95

  • Download
    1

Embed Size (px)

DESCRIPTION

Windows Scripting Host. David Stevenson Senior Software Engineer, ABB Automation [email protected] www.ontotechnology.com/vduny. Using Windows Scripting Host. Script: VBScript or JavaScript?. ASP - Server Side Script Internet Explorer - Client Side Script Windows Script Host - Desktop. - PowerPoint PPT Presentation

Citation preview

Page 1: Windows Scripting Host

Windows Scripting HostWindows Scripting Host

Page 2: Windows Scripting Host

Using Windows Scripting Using Windows Scripting HostHost

David StevensonDavid StevensonSenior Software Engineer, ABB Senior Software Engineer, ABB

AutomationAutomation

[email protected]@frontiernet.net

www.ontotechnology.com/vdunywww.ontotechnology.com/vduny

Page 3: Windows Scripting Host

Script: VBScript or Script: VBScript or JavaScript?JavaScript?

ASP - Server Side ScriptASP - Server Side Script Internet Explorer - Client Side Internet Explorer - Client Side

ScriptScript Windows Script Host - DesktopWindows Script Host - Desktop

Page 4: Windows Scripting Host

Windows Scripting HostWindows Scripting Host

Easy RegistryEasy Registry Find Special FoldersFind Special Folders Environment VariablesEnvironment Variables Network: Network Drives, PrintersNetwork: Network Drives, Printers ShortcutsShortcuts URL ShortcutsURL Shortcuts Regular Expressions (VBScript 5.0)Regular Expressions (VBScript 5.0) Doesn’t need VB Run-time components Doesn’t need VB Run-time components

installedinstalled

Page 5: Windows Scripting Host

Why Windows Scripting Why Windows Scripting Host?Host?

System AdministrationSystem Administration Automate common tasksAutomate common tasks A replacement for MS-DOS .bat filesA replacement for MS-DOS .bat files A way to test componentsA way to test components Object oriented access to registry, system Object oriented access to registry, system

folders, network drives, printers, etc.folders, network drives, printers, etc. Doesn’t need VB Runtime libraries or Doesn’t need VB Runtime libraries or

installationinstallation ““Glue Language” - Glue components togetherGlue Language” - Glue components together

Page 6: Windows Scripting Host

Where to get WSH?Where to get WSH?

Windows 98 and Windows 2000Windows 98 and Windows 2000 Internet Explorer 5Internet Explorer 5 NT 4.0 Option PackNT 4.0 Option Pack msdn.microsoft.com/scriptingmsdn.microsoft.com/scripting Will run with Windows 95Will run with Windows 95

Page 7: Windows Scripting Host

Development EnvironmentDevelopment Environment

Notepad or your favorite text editorNotepad or your favorite text editor Name the text file with .vbs extensionName the text file with .vbs extension

.js for JavaScript, .wsf for Windows .js for JavaScript, .wsf for Windows Script FileScript File

Double-click .vbs, .js .wsf file to Double-click .vbs, .js .wsf file to launchlaunch

Also works with VB ApplicationsAlso works with VB Applications

Page 8: Windows Scripting Host

Visual Basic Project Visual Basic Project ReferencesReferences

Microsoft Windows Scripting Host Microsoft Windows Scripting Host Object Model - WSHOM.OCXObject Model - WSHOM.OCX

Windows Scripting Host - Windows Scripting Host - Wscript.exeWscript.exe

Microsoft Scripting Runtime - Microsoft Scripting Runtime - SCRRUN.DLLSCRRUN.DLL

Microsoft VBScript Regular Microsoft VBScript Regular Expressions - VBScript.dll\2Expressions - VBScript.dll\2

Page 9: Windows Scripting Host

Wscript Properties and Wscript Properties and MethodsMethods

Arguments (Collection)Arguments (Collection) EchoEcho GetObjectGetObject CreateObjectCreateObject QuitQuit VersionVersion

Page 10: Windows Scripting Host

Wscript.Shell Properties and Wscript.Shell Properties and MethodsMethods

RunRun PopupPopup CreateShortcutCreateShortcut SpecialFolders (Collection)SpecialFolders (Collection) Environment (Collection)Environment (Collection) RegDeleteRegDelete RegReadRegRead RegWriteRegWrite

Page 11: Windows Scripting Host

I/O RedirectionI/O Redirection

Wscript.Echo “Output text.”Wscript.Echo “Output text.” Outputs to Message Box if script run by Outputs to Message Box if script run by

Wscript.exeWscript.exe Outputs to command line (standard Outputs to command line (standard

output) if script run by Cscript.exeoutput) if script run by Cscript.exeSet WshShell = CreateObject ( "Wscript.Shell" )Set WshShell = CreateObject ( "Wscript.Shell" )

WshShell.Popup "This is popup text.”WshShell.Popup "This is popup text.” WshShell.Popup always outputs to WshShell.Popup always outputs to

message boxmessage box

Page 12: Windows Scripting Host

Command Line ArgumentsCommand Line Arguments

For each objArg in Wscript.ArgumentsFor each objArg in Wscript.Arguments

Wscript.Echo objArgWscript.Echo objArg

NextNext Or:Or:

For i = 0 to Wscript.Arguments.Count - For i = 0 to Wscript.Arguments.Count - 11

Wscript.Echo Wscript.Arguments ( i )Wscript.Echo Wscript.Arguments ( i )

Next Next

Page 13: Windows Scripting Host

WshShell.Run SyntaxWshShell.Run Syntax

Syntax

WshShell.Run (strCommand, [intWindowStype], [bWaitOnReturn])

Parameters

strCommand

Environment variables within the strCommand parameter are automatically expanded.

intWindowStyle

vbHide (0), vbNormalFocus (1), vbMinimizedFocus (2), vbMaximizedFocus (3), vbNormalNoFocus(4), vbMinimizedNoFocus (6) (see Shell function)

bWaitOnReturn

If bWaitOnReturn is not specified or FALSE, this method immediately returns to script execution rather than waiting on the process termination.

If bWaitOnReturn is set to TRUE, the Run method returns any error code returned by the application.

If bWaitOnReturn is not specified or is FALSE, Run returns an error code of 0 (zero).

Page 14: Windows Scripting Host

Run Example 1Run Example 1

A script that brings up Notepad to edit itself.

Set WshShell = Wscript.CreateObject("Wscript.Shell")

WshShell.Run ( "%windir%\notepad" & Wscript.ScriptFullName )

Page 15: Windows Scripting Host

Run Examples - Advanced Run Examples - Advanced 11

Bring up the default application for Bring up the default application for any extension (ex. .xls, .doc, .txt)any extension (ex. .xls, .doc, .txt)

Set shell = CreateObject ( "WScript.Shell" )Set shell = CreateObject ( "WScript.Shell" )

shell.run "note.txt”shell.run "note.txt”

Run Windows Explorer using RunRun Windows Explorer using RunSet shell = CreateObject ( "WScript.Shell" )Set shell = CreateObject ( "WScript.Shell" )

shell.run "c:"shell.run "c:"

shell.run Chr(34) & "E:\Windows Script Host" & shell.run Chr(34) & "E:\Windows Script Host" & Chr(34)Chr(34)

Page 16: Windows Scripting Host

Run Examples - Advanced Run Examples - Advanced 22

Bring up Mail WindowBring up Mail WindowSet shell = CreateObject ( "WScript.Shell" )Set shell = CreateObject ( "WScript.Shell" )

shell.run shell.run "mailto:[email protected];[email protected]"mailto:[email protected];[email protected]”bb.com”

Run Internet ExplorerRun Internet ExplorerSet shell = CreateObject ( "WScript.Shell" )Set shell = CreateObject ( "WScript.Shell" )

shell.run "http://www.wrox.com"shell.run "http://www.wrox.com"

Page 17: Windows Scripting Host

Registry - Visual Basic Registry - Visual Basic StyleStyle

Disadvantages:Disadvantages:• SaveSetting, GetSetting, SaveSetting, GetSetting,

GetAllSettings and DeleteSetting use:GetAllSettings and DeleteSetting use:HKEY_CURRENT_USER\Software\VB and VBA Program Settings

• Win API approach more complex.Win API approach more complex.An object oriented approach would be An object oriented approach would be better (IntelliSense).better (IntelliSense).

Page 18: Windows Scripting Host

Registry - Hive Registry - Hive AbbreviationsAbbreviations

ShortShort LongLong HKCUHKCU HKEY_CURRENT_USERHKEY_CURRENT_USER HKLMHKLM HKEY_LOCAL_MACHINEHKEY_LOCAL_MACHINE HKCRHKCR HKEY_CLASSES_ROOTHKEY_CLASSES_ROOT HKEY_USERSHKEY_USERS HKEY_CURRENT_CONFIGHKEY_CURRENT_CONFIG

Page 19: Windows Scripting Host

Registry - RegWrite SyntaxRegistry - RegWrite Syntax

WshShell.RegWrite strKey, anyValue[, WshShell.RegWrite strKey, anyValue[, strType]strType]

where strType is one of:where strType is one of:• "REG_SZ" "REG_SZ" • "REG_EXPAND_SZ" "REG_EXPAND_SZ"

Example value: "%SystemRoot%\Example value: "%SystemRoot%\Notepad.exe"Notepad.exe"

• "REG_DWORD" - Visual Basic Type Long"REG_DWORD" - Visual Basic Type Long• "REG_BINARY”"REG_BINARY”

Page 20: Windows Scripting Host

Registry - RegRead, Registry - RegRead, RegDeleteRegDelete

RegRead supports following types: RegRead supports following types: REG_SZ, REG_EXPAND_SZ, REG_DWORD, REG_BINARY, and REG_MULTI_SZ

varValue = WshShell.RegRead varValue = WshShell.RegRead ( strKey )( strKey )

WshShell.RegDelete strKeyWshShell.RegDelete strKey

Page 21: Windows Scripting Host

Registry ExampleRegistry Example

Set WshShell = Wscript.CreateObject Set WshShell = Wscript.CreateObject ( "Wscript.Shell" )( "Wscript.Shell" )

strRegKey = "HKCU\Software\VDUNY\strRegKey = "HKCU\Software\VDUNY\RegistryWriteTest"RegistryWriteTest"

WshShell.RegWrite strRegKey, "Hello Registry"WshShell.RegWrite strRegKey, "Hello Registry"

strReadRegistry = WshShell.RegRead strReadRegistry = WshShell.RegRead ( strRegKey )( strRegKey )

Wscript.echo strReadRegistryWscript.echo strReadRegistry

Wshell.RegDelete strRegKeyWshell.RegDelete strRegKey

Page 22: Windows Scripting Host

Wscript.Network Wscript.Network PropertiesProperties

ComputerNameComputerName UserDomainUserDomain UserNameUserName

Page 23: Windows Scripting Host

Wscript.Network MethodsWscript.Network Methods

MapNetworkDriveMapNetworkDrive EnumNetworkDrivesEnumNetworkDrives AddPrinterConnectionAddPrinterConnection RemovePrinterConnectionRemovePrinterConnection SetDefaultPrinterSetDefaultPrinter

Page 24: Windows Scripting Host

Network InformationNetwork Information

Computer NameComputer Name User DomainUser Domain User NameUser Name

Set net = CreateObject ( "Wscript.Network" )Set net = CreateObject ( "Wscript.Network" )

Wscript.echo "Computer Name: " & Wscript.echo "Computer Name: " & net.ComputerNamenet.ComputerName

Wscript.echo "User Domain: " & net.UserDomainWscript.echo "User Domain: " & net.UserDomain

Wscript.echo "User Name: " & net.UserNameWscript.echo "User Name: " & net.UserName

Page 25: Windows Scripting Host

Create or Remove Create or Remove Network DrivesNetwork Drives

Set net = CreateObject ( "Wscript.Network" )Set net = CreateObject ( "Wscript.Network" )

net.MapNetworkDrive ( "Z:", "\\abbntroc01\net.MapNetworkDrive ( "Z:", "\\abbntroc01\develop" ) develop" )

net.RemoveNetworkDrive "Z:"net.RemoveNetworkDrive "Z:"

Page 26: Windows Scripting Host

Enumerate Network DrivesEnumerate Network Drives

Private Const conWindowTitle = "Enumerate Network Drives"Private Const conWindowTitle = "Enumerate Network Drives"

Dim WSHNetwork, colDrives, strMsg, iDim WSHNetwork, colDrives, strMsg, i

Set WSHNetwork = WScript.CreateObject("WScript.Network")Set WSHNetwork = WScript.CreateObject("WScript.Network")

Set colDrives = WSHNetwork.EnumNetworkDrivesSet colDrives = WSHNetwork.EnumNetworkDrives

If colDrives.Count = 0 ThenIf colDrives.Count = 0 Then

MsgBox "There are no network drives.", vbInformation + vbOkOnly, MsgBox "There are no network drives.", vbInformation + vbOkOnly, conWindowTitle conWindowTitle

ElseElse

strMsg = "Current network drive connections: " & vbCrLfstrMsg = "Current network drive connections: " & vbCrLf

For i = 0 To colDrives.Count - 1 Step 2For i = 0 To colDrives.Count - 1 Step 2

strMsg = strMsg & vbCrLf & colDrives(i) & vbTab & colDrives(i + 1)strMsg = strMsg & vbCrLf & colDrives(i) & vbTab & colDrives(i + 1)

NextNext

MsgBox strMsg, vbInformation + vbOkOnly, conWindowTitle MsgBox strMsg, vbInformation + vbOkOnly, conWindowTitle

End IfEnd If

Page 27: Windows Scripting Host

Network PrintersNetwork Printers

Private Const conWindowTitle = "Enumerate Network Printers"Private Const conWindowTitle = "Enumerate Network Printers"

Dim WSHNetwork, colPrinters, strMsg, iDim WSHNetwork, colPrinters, strMsg, i

Set WSHNetwork = WScript.CreateObject ( "WScript.Network" )Set WSHNetwork = WScript.CreateObject ( "WScript.Network" )

Set colPrinters = WSHNetwork.EnumPrinterConnectionsSet colPrinters = WSHNetwork.EnumPrinterConnections

If colPrinters.Count = 0 ThenIf colPrinters.Count = 0 Then

MsgBox "There are no network printers.", vbInformation + vbOkOnly, MsgBox "There are no network printers.", vbInformation + vbOkOnly, conWindowTitle conWindowTitle

ElseElse

strMsg = "Current network printers: " & vbCrLfstrMsg = "Current network printers: " & vbCrLf

For i = 0 To colPrinters.Count - 1 Step 2For i = 0 To colPrinters.Count - 1 Step 2

strMsg = strMsg & vbCrLf & colPrinters(i) & vbTab & colPrinters(i + 1)strMsg = strMsg & vbCrLf & colPrinters(i) & vbTab & colPrinters(i + 1)

NextNext

MsgBox strMsg, vbInformation + vbOkOnly, conWindowTitle MsgBox strMsg, vbInformation + vbOkOnly, conWindowTitle

End IfEnd If

Page 28: Windows Scripting Host

Expand Environment Expand Environment StringsStrings

Set WshShell = CreateObject ( "Wscript.Shell" )Set WshShell = CreateObject ( "Wscript.Shell" )

strExpanded = strExpanded = WshShell.ExpandEnvironmentStrings WshShell.ExpandEnvironmentStrings ("%SystemRoot%\System32\notepad.exe")("%SystemRoot%\System32\notepad.exe")

MsgBox strExpandedMsgBox strExpanded

Page 29: Windows Scripting Host

Environment VariablesEnvironment Variables

Set WshShell = Wscript.CreateObject ( "Wscript.Shell" )Set WshShell = Wscript.CreateObject ( "Wscript.Shell" )

' May select either "SYSTEM", "USER", or "VOLATILE"' May select either "SYSTEM", "USER", or "VOLATILE"

For each strVarName in WshShell.Environment For each strVarName in WshShell.Environment ( "SYSTEM" )( "SYSTEM" )

Wscript.echo strVarNameWscript.echo strVarName

NextNext

' Set a reference to the SYSTEM environment variables ' Set a reference to the SYSTEM environment variables collectioncollection

Set WshSysEnv = WshShell.Environment ( "SYSTEM" )Set WshSysEnv = WshShell.Environment ( "SYSTEM" )

Wscript.echo "TEMP", WshSysEnv ( "TEMP" )Wscript.echo "TEMP", WshSysEnv ( "TEMP" )

Page 30: Windows Scripting Host

Special FoldersSpecial Folders

More special folders than FileSystemObjectMore special folders than FileSystemObject FileSystemObject GetSpecialFolder supports:FileSystemObject GetSpecialFolder supports:

WindowFolder, SystemFolder, WindowFolder, SystemFolder, TemporaryFolderTemporaryFolder

WSH supports:WSH supports:AllUsersDesktop, AllUsersStartMenu, AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, AllUsersStartup, Desktop, AllUsersPrograms, AllUsersStartup, Desktop, Favorites, Fonts, MyDocuments, NetHood, Favorites, Fonts, MyDocuments, NetHood, Programs, Recent, SendTo, StartMenu, Programs, Recent, SendTo, StartMenu, Startup and TemplatesStartup and Templates

Page 31: Windows Scripting Host

Special Folders ExampleSpecial Folders Example

Set WshShell = Wscript.CreateObject ( "Wscript.Shell" )Set WshShell = Wscript.CreateObject ( "Wscript.Shell" )

Wscript.echo "Desktop", WshShell.SpecialFolders Wscript.echo "Desktop", WshShell.SpecialFolders ( "Desktop" )( "Desktop" )

For each strFolder in WshShell.SpecialFoldersFor each strFolder in WshShell.SpecialFolders

Wscript.echo strFolderWscript.echo strFolder

NextNext

Page 32: Windows Scripting Host

ShortcutsShortcuts

Dim WSHShell, MyShortcut, MyDesktop, DesktopPathDim WSHShell, MyShortcut, MyDesktop, DesktopPath

Set WSHShell = WScript.CreateObject("WScript.Shell")Set WSHShell = WScript.CreateObject("WScript.Shell")

DesktopPath = WSHShell.SpecialFolders("Desktop")DesktopPath = WSHShell.SpecialFolders("Desktop")

' Create a shortcut object on the desktop' Create a shortcut object on the desktop

Set MyShortcut = WSHShell.CreateShortcut(DesktopPath & "\Shortcut to Set MyShortcut = WSHShell.CreateShortcut(DesktopPath & "\Shortcut to notepad.lnk")notepad.lnk")

' Set shortcut object properties and save it' Set shortcut object properties and save it

MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings("%windir%\MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings("%windir%\notepad.exe")notepad.exe")

MyShortcut.WorkingDirectory = WSHShell.ExpandEnvironmentStrings("%windir%")MyShortcut.WorkingDirectory = WSHShell.ExpandEnvironmentStrings("%windir%")

MyShortcut.WindowStyle = 4MyShortcut.WindowStyle = 4

MyShortcut.IconLocation = WSHShell.ExpandEnvironmentStrings ("%windir%\MyShortcut.IconLocation = WSHShell.ExpandEnvironmentStrings ("%windir%\notepad.exe, 0")notepad.exe, 0")

MyShortcut.SaveMyShortcut.Save

Page 33: Windows Scripting Host

URL ShortcutsURL Shortcuts

Dim WSHShell, MyShortcut, DesktopPathDim WSHShell, MyShortcut, DesktopPath

Set WSHShell = Set WSHShell = WScript.CreateObject("WScript.Shell")WScript.CreateObject("WScript.Shell")

DesktopPath = WSHShell.SpecialFolders("Desktop")DesktopPath = WSHShell.SpecialFolders("Desktop")

' Create a shortcut object on the desktop' Create a shortcut object on the desktop

Set MyShortcut = Set MyShortcut = WSHShell.CreateShortcut(DesktopPath & "\Where WSHShell.CreateShortcut(DesktopPath & "\Where do you want to go today.url")do you want to go today.url")

MyShortcut.TargetPath = "http://www.microsoft.com"MyShortcut.TargetPath = "http://www.microsoft.com"

MyShortcut.SaveMyShortcut.Save

Page 34: Windows Scripting Host

VBScript Version 5.0VBScript Version 5.0

Regular ExpressionsRegular Expressions Const statementConst statement DCOM Support, CreateObject supports remote DCOM Support, CreateObject supports remote

objectsobjects ClassesClasses With statementWith statement Eval/ExecuteEval/Execute Script encodingScript encoding Performance enhancements in IE5 and IIS5 Performance enhancements in IE5 and IIS5

(Win2000)(Win2000)

Page 35: Windows Scripting Host

ClassesClasses

All functions and subroutines in a All functions and subroutines in a class are Public unless they are class are Public unless they are declared Private.declared Private.

Keywords: “Class YourNameHere”, Keywords: “Class YourNameHere”, “End Class”.“End Class”.

Page 36: Windows Scripting Host

Class ExampleClass Example

Set MyEmp = New CEmployeeSet MyEmp = New CEmployee

MyEmp.FirstName = InputBox ( "Enter the first name: ” )MyEmp.FirstName = InputBox ( "Enter the first name: ” )

MsgBox "Hello, " & MyEmp.FirstNameMsgBox "Hello, " & MyEmp.FirstName

Class CEmployeeClass CEmployee

Private strFirstNamePrivate strFirstName

Private strIDPrivate strID

Property Get FirstName ( )Property Get FirstName ( )

FirstName = strFirstNameFirstName = strFirstName

End PropertyEnd Property

Property Let FirstName ( strNew )Property Let FirstName ( strNew )

strFirstName = strNewstrFirstName = strNew

End PropertyEnd Property

End ClassEnd Class

Adapted from: Jeffrey P. McManus, “Create Classes in VBScript 5.0”, VBPJ, April, 1999.Adapted from: Jeffrey P. McManus, “Create Classes in VBScript 5.0”, VBPJ, April, 1999.

Page 37: Windows Scripting Host

Regular ExpressionsRegular Expressions

Complex Pattern Matching - Unix Complex Pattern Matching - Unix StyleStyle

Textual search-and-replace algorithms

Page 38: Windows Scripting Host

VBScript RegExp object

PropertiesProperties• Pattern - A string that is used to define the

regular expression.

• IgnoreCase

• Global - A read-only Boolean property that indicates if the regular expression should be tested against all possible matches in a string.

Page 39: Windows Scripting Host

VBScript RegExp object

MethodsMethods• Test (string) - Returns True if the regular

expression can successfully be matched against the string, otherwise False is returned.

• Replace (search-string, replace-string)

• Execute (search-string) - Returns a Matches collection object, containing a Match object for each successful match. Doesn't modify the original string.

Page 40: Windows Scripting Host

Pattern Matching - PositionPattern Matching - Position

^ Only match the beginning of a string. ^ Only match the beginning of a string. "^A" matches first "A" in "An A+ for "^A" matches first "A" in "An A+ for Anita." Anita."

$ Only match the ending of a string. $ Only match the ending of a string. "t$" matches the last "t" in "A cat in the "t$" matches the last "t" in "A cat in the hat" hat"

\b Matches any word boundary "ly\b" \b Matches any word boundary "ly\b" matches "ly" in "possibly tomorrow." matches "ly" in "possibly tomorrow."

\B Matches any non-word boundary \B Matches any non-word boundary

Page 41: Windows Scripting Host

Pattern Matching - LiteralsPattern Matching - Literals

[xyz] Match any one character [xyz] Match any one character enclosed in the character set. enclosed in the character set.

[^xyz] Match any one character [^xyz] Match any one character not enclosed in the character set.not enclosed in the character set.

. Match any character except \n. . Match any character except \n. \w Match any word character. \w Match any word character.

Equivalent to [a-zA-Z_0-9]. Equivalent to [a-zA-Z_0-9]. \W Match any non-word character. \W Match any non-word character. \d Match any digit. \d Match any digit. \D Match any non-digit. \D Match any non-digit. \s Match any space character. \s Match any space character. \S Match any non-space \S Match any non-space

character.character. \n Matches a new line \n Matches a new line \f Matches a form feed \f Matches a form feed \r Matches carriage return \r Matches carriage return

\t Matches horizontal tab \t Matches horizontal tab \v Matches vertical tab\v Matches vertical tab

RepetitionRepetition {x} Match exactly x occurrences {x} Match exactly x occurrences

of a regular expression.of a regular expression. (x,} Match x or more occurrences (x,} Match x or more occurrences

of a regular expression. of a regular expression. {x,y} Matches x to y number of {x,y} Matches x to y number of

occurrences of a regular occurrences of a regular expression.expression.

? Match zero or one occurrences. ? Match zero or one occurrences. Equivalent to {0,1}. Equivalent to {0,1}.

* Match zero or more * Match zero or more occurrences. Equivalent to {0,}. occurrences. Equivalent to {0,}.

+ Match one or more + Match one or more occurrences. Equivalent to {1,}. occurrences. Equivalent to {1,}.

Page 42: Windows Scripting Host

Pattern Matching - Pattern Matching - Alternation and GroupingAlternation and Grouping

( ) Grouping a clause to create a ( ) Grouping a clause to create a clause. May be nested. "(ab)?(c)" clause. May be nested. "(ab)?(c)" matches "abc" or "c". matches "abc" or "c".

| Alternation combines clauses into | Alternation combines clauses into one regular expression and then one regular expression and then matches any of the individual clauses.matches any of the individual clauses.

"(ab)|(cd)|(ef)" matches "ab" or "cd" or "(ab)|(cd)|(ef)" matches "ab" or "cd" or "ef". "ef".

Page 43: Windows Scripting Host

RegExp Example 1 - Zip RegExp Example 1 - Zip CodeCode

Dim re As RegExpDim re As RegExp

Set re = New RegExpSet re = New RegExp

re.Pattern = “^\d{5}(-\d{4})?$”re.Pattern = “^\d{5}(-\d{4})?$”

If re.test ( “12345-6789” ) thenIf re.test ( “12345-6789” ) then

MsgBox “It’s a valid zip code.”MsgBox “It’s a valid zip code.”

ElseElse

MsgBox “It’s not a valid zip code.”MsgBox “It’s not a valid zip code.”

End IfEnd If

Page 44: Windows Scripting Host

RegExp Example 2 - Phone RegExp Example 2 - Phone No.No.

Public Function IsValidPhoneNumber ( strPhone )Public Function IsValidPhoneNumber ( strPhone )

Dim re Dim re ' As RegExp' As RegExp

Set re = New RegExpSet re = New RegExp

re.Pattern = "^[01]?\s*[\(\.-]?(\d{3})[\)\.-]?\s*(\d{3})[\.-](\d{4})$"re.Pattern = "^[01]?\s*[\(\.-]?(\d{3})[\)\.-]?\s*(\d{3})[\.-](\d{4})$"

If re.test ( strPhone ) thenIf re.test ( strPhone ) then

IsValidPhoneNumber = TrueIsValidPhoneNumber = True

Wscript.Echo strPhone & " is a valid phone number."Wscript.Echo strPhone & " is a valid phone number."

ElseElse

IsValidPhoneNumber = FalseIsValidPhoneNumber = False

Wscript.Echo strPhone & " is NOT a valid phone number."Wscript.Echo strPhone & " is NOT a valid phone number."

End IfEnd If

End FunctionEnd Function

Page 45: Windows Scripting Host

WSH 2.0WSH 2.0

Support for Include statementsSupport for Include statements Support for multiple script enginesSupport for multiple script engines Support for Type Libraries (get Support for Type Libraries (get

constants)constants) XML syntax allows use of XML XML syntax allows use of XML

editorseditors Support for multiple jobs in one fileSupport for multiple jobs in one file

Page 46: Windows Scripting Host

Windows Script Files Windows Script Files (.WSF)(.WSF)

<?xml version="1.0"?><?xml version="1.0"?>

<job><job>

<script language="VBScript"><script language="VBScript">

Function MessageBox(strText)Function MessageBox(strText)

MsgBox strTextMsgBox strText

End FunctionEnd Function

</script></script>

<script language="JScript"><script language="JScript">

var strText1;var strText1;

strText1 = "Hello, world!\nIn this example, JScript calls a VBScript strText1 = "Hello, world!\nIn this example, JScript calls a VBScript Function.";Function.";

MessageBox ( strText1 ) ;MessageBox ( strText1 ) ;

</script></script>

</job></job>

Page 47: Windows Scripting Host

Include FilesInclude Files

IncludeTest.wsf:IncludeTest.wsf:<job><job>

<script language="VBScript" src="IncludeFile.vbs" /><script language="VBScript" src="IncludeFile.vbs" />

<script language="VBScript"><script language="VBScript">

Wscript.Echo "Calling include file subroutine."Wscript.Echo "Calling include file subroutine."

IncludeFileSubroutineIncludeFileSubroutine

</script></script>

</job></job>

IncludeFile.vbs:IncludeFile.vbs:Private Sub IncludeFileSubroutine ()Private Sub IncludeFileSubroutine ()

MsgBox "This is IncludeFileSubroutine"MsgBox "This is IncludeFileSubroutine"

End SubEnd Sub

Page 48: Windows Scripting Host

Type Library Support Type Library Support (Constants)(Constants)

Can now get constants from COM Can now get constants from COM objectsobjects

Type library information can be found in .exe, .tlb, .olb, or .dll files.

<job><job>

<reference object="ADODB.Connection"/><reference object="ADODB.Connection"/>

<script language="VBScript"><script language="VBScript">

MsgBox "adAddNew = " & adAddNewMsgBox "adAddNew = " & adAddNew

</script></script>

</job></job>

Page 49: Windows Scripting Host

Multiple Jobs in One .wsf Multiple Jobs in One .wsf FileFile

<package><package>

<job id="JobOne"><job id="JobOne">

<script language="VBScript"><script language="VBScript">

MsgBox "Quality is Job One"MsgBox "Quality is Job One"

</Script></Script>

</job></job>

<job id="JobTwo"><job id="JobTwo">

<script language="VBScript"><script language="VBScript">

MsgBox "Quality is Job Two"MsgBox "Quality is Job Two"

</Script></Script>

</job></job>

</package></package>

Page 50: Windows Scripting Host

Invoking a JobInvoking a Job

Wscript MultipleJobs.wsf Wscript MultipleJobs.wsf //job:"JobOne”//job:"JobOne”

Wscript MultipleJobs.wsf Wscript MultipleJobs.wsf //job:"JobTwo"//job:"JobTwo"

Page 51: Windows Scripting Host

Creating Components With Creating Components With ScriptScript

Download and Install Windows Script Download and Install Windows Script ComponentsComponents

Download and Install Windows Script Download and Install Windows Script Component WizardComponent Wizard

Use the Wizard to Generate a .WSC Use the Wizard to Generate a .WSC FileFile

Right-Click on .WSC File to Register Right-Click on .WSC File to Register Component or Generate Type LibraryComponent or Generate Type Library

Page 52: Windows Scripting Host

Parts of a WSH Parts of a WSH Component FileComponent File

<?xml version="1.0"?><?xml version="1.0"?>

<component><component>

<registration><registration>

</registration></registration>

<public><public>

<property name=”MyProperty"><property name=”MyProperty">

<get/><get/>

<put/><put/>

</property></property>

<method name=”MyMethod"><method name=”MyMethod">

</method></method>

<event name=”MyEvent"><event name=”MyEvent">

<parameter <parameter name=”MyEventParam" />name=”MyEventParam" />

</event></event>

</public></public>

<script language="VBScript"><script language="VBScript">

<![CDATA[<![CDATA[

]]>]]>

</script></script>

</component></component>

Page 53: Windows Scripting Host

Registration XML TagRegistration XML Tag

<registration progid="progID" classid="GUID" description="description"version="version" [remotable=remoteFlag]><script>(registration and unregistration script)</script></registration>

Page 54: Windows Scripting Host

Defining Component Defining Component PropertiesProperties

<property name="propertyName"><get [internalName="getFunctionName"] /><put [internalName="putFunctionName"] /></property>

Page 55: Windows Scripting Host

Defining Component Defining Component MethodsMethods

<method name="methodName" internalName="functionName" dispid=dispID>[<parameter name="parameterID"/>]</method>

Page 56: Windows Scripting Host

Defining Component Defining Component EventsEvents

<event name="name" dispid="dispid"/>

Page 57: Windows Scripting Host

WSC Wizard Slide - Step 1WSC Wizard Slide - Step 1

Page 58: Windows Scripting Host

WSC Wizard Slide - Step 2WSC Wizard Slide - Step 2

Page 59: Windows Scripting Host

WSC Wizard Slide - Step 3WSC Wizard Slide - Step 3

Page 60: Windows Scripting Host

WSC Wizard Slide - Step 4WSC Wizard Slide - Step 4

Page 61: Windows Scripting Host

WSC Wizard Slide - Step 5WSC Wizard Slide - Step 5

Page 62: Windows Scripting Host

WSC Wizard Slide - Step 6WSC Wizard Slide - Step 6

Page 63: Windows Scripting Host

ResourcesResources

msdn.microsoft.com/voices/scripting.aspmsdn.microsoft.com/voices/scripting.asp msdn.microsoft.com/scriptingmsdn.microsoft.com/scripting www.win32scripting.comwww.win32scripting.com Windows Script Host Programmer's Reference, see

http://www.wrox.com/Consumer/Store/Details.asp?http://www.wrox.com/Consumer/Store/Details.asp?ISBN=1861002653ISBN=1861002653

Vernon W. Hui , ""Microsoft Beefs up VBScript with Regular Expressions""msdn.microsoft.com/workshop/languages/clinic/scripting051099.aspmsdn.microsoft.com/workshop/languages/clinic/scripting051099.asp

Jeffrey McManus, "Automate With Windows Scripting Host", Visual Jeffrey McManus, "Automate With Windows Scripting Host", Visual Programming, Spring 1999Programming, Spring 1999

MSDN Library - January 2000MSDN Library - January 2000\Platform SDK\Tools And Languages\Scripting\Microsoft Windows \Platform SDK\Tools And Languages\Scripting\Microsoft Windows Script HostScript Host

Page 64: Windows Scripting Host

Resources 2Resources 2

Jeffrey P. McManus, “Create Classes in VBScript 5.0”, VBPJ, Jeffrey P. McManus, “Create Classes in VBScript 5.0”, VBPJ, April, 1999April, 1999

Andrew Clinick, “Andrew Clinick, “Clinick's Clinic on Scripting: Take Five -- What's New in the Version 5.0 Script Engines”, msdn.microsoft.com/workshop/languages/clinic/clinick_ie5.aspmsdn.microsoft.com/workshop/languages/clinic/clinick_ie5.asp

Newsgroup: microsoft.public.scripting.wshNewsgroup: microsoft.public.scripting.wshmicrosoft.public.scripting.vbscriptmicrosoft.public.scripting.vbscriptmicrosoft.public.scripting.jscriptmicrosoft.public.scripting.jscript

http://cwashington.netreach.net/http://cwashington.netreach.net/

Page 65: Windows Scripting Host

AppendixAppendix

Page 66: Windows Scripting Host

FileSystemObjectFileSystemObject

FileSystemObjectFileSystemObject

DrivesDrives

DriveDrive

FoldersFolders

FolderFolder

FileFile

FilesFiles

SubFoldersSubFolders

Page 67: Windows Scripting Host

FileSystemObject FileSystemObject ReferenceReference

MSDN Library Visual Studio 6.0\MSDN Library Visual Studio 6.0\Visual Basic Documentation\Visual Basic Documentation\Using Visual Basic\Programmer’s Using Visual Basic\Programmer’s Guide\Guide\Part 2: What Can You Do With Part 2: What Can You Do With Visual Basic?\Visual Basic?\Processing Drives, Folders, and Processing Drives, Folders, and FilesFiles

Page 68: Windows Scripting Host

File System and Folder File System and Folder objectobject

To create a File System ObjectTo create a File System ObjectDim fsoDim fsoSet fso = CreateObject Set fso = CreateObject ( “Scripting.FileSystemObject” )( “Scripting.FileSystemObject” )

To Get A Folder objectTo Get A Folder objectDim fldDim fldSet fld = fso.GetFolder ( “C:\MyFolder” )Set fld = fso.GetFolder ( “C:\MyFolder” )

Test if a Folder existsTest if a Folder existsIf Not fso.FolderExists ( “C:\NoFolder” ) Then Exit SubIf Not fso.FolderExists ( “C:\NoFolder” ) Then Exit Sub

Page 69: Windows Scripting Host

FileSystemObjectFileSystemObject

To Create a FolderTo Create a Folderfso.CreateFolder ( “C:\NewFolder” )fso.CreateFolder ( “C:\NewFolder” )

To Copy a FolderTo Copy a Folderfso.CopyFolder source, destination, [, overwrite ]fso.CopyFolder source, destination, [, overwrite ]

source can contain wildcards, ex. “C:\Folder\source can contain wildcards, ex. “C:\Folder\*.txt”*.txt”

To Move a FolderTo Move a Folderfso.MoveFolder source, destinationfso.MoveFolder source, destination

Page 70: Windows Scripting Host

Folder PropertiesFolder Properties

Attributes (Normal, ReadOnly, Attributes (Normal, ReadOnly, Hidden, System, Directory)Hidden, System, Directory)

DateCreated, DateLastAccessed, DateCreated, DateLastAccessed, DateLastModifiedDateLastModified

Name, Path, ShortName (8.3), Name, Path, ShortName (8.3), ShortPathShortPath

Size, TypeSize, Type SubFolders, Files, Drive, ParentFolderSubFolders, Files, Drive, ParentFolder

Page 71: Windows Scripting Host

Folder MethodsFolder Methods

Copy ( Destination As String, Copy ( Destination As String, [ OverWriteFiles As Boolean = True ] )[ OverWriteFiles As Boolean = True ] )

CreateTextFile ( FileName As String, CreateTextFile ( FileName As String, [ Overwrite As Boolean = True ], [ Overwrite As Boolean = True ], [ Unicode As Boolean = False ] ) As [ Unicode As Boolean = False ] ) As TextStreamTextStream

Delete ( [ Force As Boolean = False ] )Delete ( [ Force As Boolean = False ] ) Move destinationMove destination

Page 72: Windows Scripting Host

File object PropertiesFile object Properties

Attributes (Normal, ReadOnly, Attributes (Normal, ReadOnly, Hidden, System, Directory)Hidden, System, Directory)

DateCreated, DateLastAccessed, DateCreated, DateLastAccessed, DateLastModifiedDateLastModified

Name, Path, ShortName (8.3), Name, Path, ShortName (8.3), ShortPath(8.3)ShortPath(8.3)

Size, TypeSize, Type Drive, ParentFolderDrive, ParentFolder

Page 73: Windows Scripting Host

File object MethodsFile object Methods

Copy ( Destination As String, Copy ( Destination As String, [ OverWriteFiles As Boolean = True ] )[ OverWriteFiles As Boolean = True ] )

Delete ( [ Force As Boolean = False ] )Delete ( [ Force As Boolean = False ] ) Move ( Destination As String )Move ( Destination As String ) OpenAsTextStream ( [ IOMode As OpenAsTextStream ( [ IOMode As

IOMode = ForReading ], [Format As IOMode = ForReading ], [Format As Tristate = TristateFalse ] ) As Tristate = TristateFalse ] ) As TextStreamTextStream

Page 74: Windows Scripting Host

TextStream PropertiesTextStream Properties

AtEndOfLineAtEndOfLine AtEndOfStreamAtEndOfStream ColumnColumn LineLine

Page 75: Windows Scripting Host

TextStream MethodsTextStream Methods

CloseClose Read ( Characters As Long ) As Read ( Characters As Long ) As

StringString ReadAll ( ) As StringReadAll ( ) As String ReadLine ( ) As StringReadLine ( ) As String Write ( Text As String )Write ( Text As String ) WriteLine ( [ Text As String ] )WriteLine ( [ Text As String ] )