Notions de base la programmation de VBScript
VBScript est un langage fonctionne sur la plate-forme Active Scripting. Le WSH (Windows Script Host) sont une des applications logicielles qui utilisent Active Scripting et fournissent des fonctions pour permettre aux scripts d'interagir avec le shell de commande et environnement graphique Windows. Le VBScript dans l'enviroment WSH prend en charge une fonctionnalité appelée "OLE Automation" qui offre un accès à des bibliothèques nombreux logiciels disponibles sous Windows.
Sortie
Voici comment on peut sortir du texte à l'écran, ou en informatique StdOut (sortie standard). Cela se fait avec l'objet WScript. La méthode WScript.Echo( ) permet d'imprimer un caractère de nouvelle ligne.
wscript.echo "Hello"
Variables
VBScript ne possède qu'un seul type de données appelé une variant. Les variables peuvent être déclarées explicitement en utilisant le "dim" mot-clé. Cela rend le code script plus lisible, mais elle n'est pas nécessaire.
dim num : num = 5 dim char : char = "a" dim str : str = "This is a string" wscript.echo "Number is " & num wscript.echo "Character is '" & char & "'" wscript.echo "String is """ & str & """"
Constantes
VBScript a un support pour constante. En la programmation, une constante est une valeur qui ne peut pas être modifiée pendant l'exécution d'un programme.
const PI = 3.145926 wscript.echo PI
Arithmétique
Comme tout langage moderne, VBScript a un support intégré pour l'arithmétique.
' integer arithmatic width = 5 : length = 6 area = width * length wscript.echo "The area of a square(width=" & width & _ ", length=" & length & ") is " & area ' boolean logic result = true and false or true wscript.echo "The statement (true AND false OR true) is " & result
VBScript prend également en charge les mathématiques à virgule flottante.
const PI = 3.1415927 radius = 3 area = PI * radius ^ 2 wscript.echo "The area of a circle (radius=" & radius & ") is " & area & "."
VBScript prend en charge de nombreuses fonctions mathématiques comme cosinus.
const PI = 3.145926 wscript.echo "The cosine of pi/4 is: " & cos(PI/4)
Entrée
C'est la façon d'obtenir la saisie au clavier, ou en informatique STDIN (entrée standard). Cela se fait avec l'objet WScript.
wscript.stdout.write "Enter your name: " name = wscript.stdin.readline wscript.echo "Hello " & name
Choix
La branche est un point où un flux logiciel est modifié. Essentiellement, le logiciel choisit un chemin après l'évaluation. VBScript dispose de deux mécanismes de cette fonctionnalité:
- if expression then … elseif expression then … else … end if
- select case valeur … case valeur … case else … end select
wscript.stdout.write "Input a number: " number = cint(wscript.stdin.readline) if number > 0 then wscript.echo "Number is greater than 0" ElseIf Number < 0 then wscript.echo "Number is less than 0" Else wscript.echo "Number is 0" end if
Cette construction comparer une valeur principale à une valeur dans chaque instruction «case». Si une correspondance est trouvée, un bloc de code est exécuté.
Cet extrait de code montre comment faire correspondre à une expression régulière. En VBScript, le «select» bloc est très limité et ne peut pas correspondre à un modèle.
La solution à cette limitation consiste à définir le «select» bloc pour correspondre à «true». La fonction de recherche retourne «true» si il ya un match, et avec «true» et «true», que «case» sera exécuté.
Cet extrait de code montre comment faire correspondre à une expression régulière. En VBScript, le «select» bloc est très limité et ne peut pas correspondre à un modèle.
La solution à cette limitation consiste à définir le «select» bloc pour correspondre à «true». La fonction de recherche retourne «true» si il ya un match, et avec «true» et «true», que «case» sera exécuté.
' prompt and read 1 character wscript.stdout.write "Input a character: " keypress = wscript.stdin.read(1) ' find match and print result select case true case match("[a-z]", keypress) wscript.echo "Lowercase letter" case match("[A-Z]", keypress) wscript.echo "Uppercase letter" case match("[0-9]", keypress) wscript.echo "Digit" case else wscript.echo "Punctuation, whitespace, or other" end select ' match() - returns true if pattern found in string function match(pattern, string) set re = new regexp re.pattern = pattern match = re.test(string) end function
Cet extrait de code montre comment faire correspondre une expression régulière en utilisant un «if» construction.
' prompt and read one character wscript.stdout.write "Input a character: " keypress = wscript.stdin.read(1) ' find match and print result if match("[a-z]", keypress) then wscript.echo "Lowercase letter" elseif match("[A-Z]", keypress) then wscript.echo "Uppercase letter" elseif (match("[0-9]", keypress)) then wscript.echo "Digit" else wscript.echo "Punctuation, whitespace, or other" end if ' match() - returns true if pattern found in string function match(pattern, string) set re = new regexp re.pattern = pattern match = re.test(string) end function
Boucles
Une boucle est une séquence d'instructions qui est spécifié une fois mais qui peut être réalisée plusieurs fois de suite. VBScript possède six différentes structures de boucle.
- do … loop while expression
- do … loop until expression
- do while expression … loop
- do until expression … loop
- for numéro to numéro … next
- for each élément in ensemble … next
count = 10 while count > 0 wscript.echo "Count is " & count count = count - 1 wend
for count = 10 to 0 step -1 wscript.echo "Count is " & count next
do wscript.stdout.write "Enter your name (quit to Exit): " answer = wscript.stdin.readline if answer <> "quit" then wscript.echo "Hello " & answer end if loop while (answer <> "quit")
do wscript.stdout.write "Enter your name (quit to Exit): " answer = wscript.stdin.readline if answer <> "quit" then wscript.echo "Hello " & answer end if loop until (answer = "quit")
do until (answer = "quit") wscript.stdout.write "Enter your name (quit to Exit): " answer = wscript.stdin.readline if answer <> "quit" then wscript.echo "Hello " & answer end if loop
' COM objects used in script set fso = createobject("Scripting.FileSystemObject") set shell = createobject("wscript.shell") ' iterate each item returned from subshell for each item in exec("cmd /c dir /b") ' test item is a directory if fso.folderexists(item) then wscript.echo item & " is a directory" else wscript.echo item & " is not a directory" end if next ' exec() - given command returns array of result function exec (cmd) dim files() ' create local array dim size : size = 0 ' create starting size set stdout = shell.exec(cmd).stdout ' capture stdout from exec ' iterate through lines & save into array while not stdout.atendofstream redim preserve files(size) ' resize the array files(size) = stdout.readline ' append to array size = size + 1 ' increase size counter wend exec = files ' return array end function
Tableaux
VBScript supporte les tableaux statiques. Cela signifie que l'on doit connaître la taille exacte de la matrice. Afin d'ajouter un élément au tableau, il doit être redimensionnée.
' create empty list dim nicknames() ' resize array and insert element by index redim preserve nicknames(1) : nicknames(0) = "bob" redim preserve nicknames(2) : nicknames(1) = "ed" redim preserve nicknames(3) : nicknames(2) = "steve" redim preserve nicknames(4) : nicknames(3) = "ralph" redim preserve nicknames(5) : nicknames(4) = "joe" redim preserve nicknames(6) : nicknames(5) = "deb" redim preserve nicknames(7) : nicknames(6) = "kate" wscript.echo "The total nicknames are: " & ubound(nicknames) wscript.echo "The nicknames are: " & join(nicknames, " ")
Cet extrait de code illustre comment parcourir un tableau en utilisant «for each».
' create populated list nicknames = array("bob","ed","steve","ralph","joe","deb","kate") ' iterate through array by each item wscript.echo "The names are: " for each name in nicknames wscript.echo " " & name next
C'est une façon de parcourir une tableau par un indice.
' create populated list nicknames = array("bob","ed","steve","ralph","joe","deb","kate") ' iterate array elements by index wscript.echo "The names are: " for count = 0 to ubound(nicknames) wscript.echo " nicknames[" & count & "]=" & nicknames(count) next
Tableaux associatifs
VBScript ne dispose pas d'une structure de données pour un tableau associatif. Il ya une bibliothèque logicielle appelée «Scripting.Dictionary» qui offre cette fonctionnalité.
' initialize COM object set ages = CreateObject("Scripting.Dictionary") ' add one elment at a time ages.add "bob", 34 ages.add "ed", 58 ages.add "steve", 32 ages.add "ralph", 23 ages.add "deb", 46 ages.add "kate", 19 ' enumerate & print values wscript.echo "Keys (names): ", join(ages.keys, " ") wscript.echo "Values (ages): ", join(ages.items, " ")
Le object dictionnaire est limitée car une seule paire clé-valeur peut être affectée à la fois. Il n'existe aucun mécanisme pour initialiser un object dictionnaire avec la liste des articles. Voici deux fonctions qui peuvent être utilisées pour émuler cette fonctionnalité.
' populate initial dictionary set ages = dictionary(array("bob", 34, "ed", 58, "steve", 32, "ralph", 23)) ' append more items into dictionary set ages = merge(ages, dictionary(array("deb", 46, "kate", 19))) ' iterate through dictionary, print key/value pairs wscript.echo "The ages are: " for each name in ages.keys wscript.echo " ages[" & name & "]=" & ages.item(name) next ' dictionary() - creates dictionary given array function dictionary (items) ' create empty dictionary set dictionary = CreateObject("Scripting.Dictionary") ' iterate through array to create dictionary for i=lbound(items) to ubound(items) step 2 dictionary.add items(i), items(i+1) next end function ' merge() - merges two dictionaries together function merge (left, right) ' create empty dictionary set merge = CreateObject("Scripting.Dictionary") ' iterate through left dictionary for each key in left.keys merge.add key, left(key) next ' iterate through right dictionary for each key in right.keys merge.add key, right(key) next end function