Windows Script

De Cacauet Wiki
Salta a la navegació Salta a la cerca

També conegut com a WSH (Windows Script Host) és una forma de realitzar scripts en Windows utilitzant algun dels llenguatges compatibles amb Microsoft, típicament (però no només) Visual Basic. Aquest article el farem en Visual Basic que resulta molt útil per la seva senzillesa.


Intro

No cal tenir instal·lat res en particular. Windows és capaç d'executar els arxius amb extensió .vbs . Recordeu, això sí, de treure el setting de l'explorador de Windows de "Amagar extensions pels tipus d'arxiu coneguts", i així poder renombrar els nostres arxius amb l'extensió VBS.

Es recomana, això sí, algun editor de text amb syntax highlighting com el típic Notepad++. Com a alternativa a Visual Studio (és molt pesat i de pagament) hi ha una versió més "lite": Visual Studio Code, fins i tot està per a Linux!

Referències:


Primeres passes

Edita un arxiu prova1.vbs amb el teu editor favorit i posa-hi:

 'això és un comentari
 rem Això és un altre comentari
 
 Wscript.echo "holaaaaa"

Ara, per executar-ho per línia de comandes només caldrà que fem:

> cscript prova1.vbs

Si el volem executar en mode visual, podem fer-hi un doble-click o bé executar

> wscript prova1.vbs


Entrada i sortida

Els típics mètodes d'entrada i sortida son:

  • Wscript.echo : per mostrar missatges. Utilitza una finestra o la consola depenent si hem executat wscript o cscript (text i variables es concatenen amb "&" o amb comes):
    Wscript.echo "el resultat és ", var1
  • Wscript.StdIn.ReadLine : per llegir dades de la consola.
    var2 = Wscript.StdIn.ReadLine
  • InputBox( prompt, [títol], [defecte], [x], [y] ) : finestra d'entrada de dades.
    var3 = InputBox("entra el màxim","entrada de dades")
  • MsgBox text, botons, títol : finestra de sortida de dades.
    • Botons:
      • 0 OK
      • 1 OK , Cancel
      • 2 Abort , Retry , Ignore
      • 3 Yes , No , Cancel
      • 4 Yes , No
      • 5 Retry , Cancel
    • Resultat del quadre:
      1. OK
      2. Cancel
      3. Abort
      4. Retry
      5. Ignore
      6. Yes
      7. No


Condicionals

IF:

if <condicio1> then
   ...
   seqüència 1
   ...
elseif <condicio2> then
   ...
   seqüècia 2
   ...
else
   ...
   seqüència 3
   ...
end if
   

Exemple:

if opcions = "verbose" then
    Wscript.echo "Processat l'arxiu " & arxiuActual
end if

CASE (ve a ser el switch de C):

select case <variable>
    case <valor1>
       ...
       seqüència 1
       ...
    case <valor2>
       ...
       seqüècia 2
       ...
    case <valor3>
       ...
       seqüència 3
       ...
end select
       

Exemple:

select case opcio2
    case start
        startEngine()
    case stop
        stopEngine()
end select


Bucles

For

While

...


Funcions i procediments

La diferència entre l'una i l'altre és que les funcions retornen un valor, mentre que els procediments no.

Procediment:

Sub esborra_arxius( arxius )
    ...
End Sub

Els procediment es criden SENSE PARÈNTESIS (encara que calgui passar paràmetres), per exemple:

esborra_arxius arxiu1

Funció:

Function busca_arxius( tipus, carpeta_origen )
    ...
   ' al final d'una funció és obligatori retornar algun valor
   ' enlloc del típic return farem servir el mateix nom de la funció
   busca_arxius = arrayArxius
End Sub

Les funcions cal cridar-les AMB PARÈNTESIS:

busca_arxius( ".txt", "c:\Users" )


Objectes

Llegiu POO Introducció.

En el cas de Windows Script disposarem de l'objecte Wscript que ens permetrà l'accés a les llibreries del sistema que ens interessen.

Referència MSDN

Un bon lloc per on començar és amb la llibreria d'accés al sistema d'arxius.


Exercicis

Tots els exercicis han de tenir comentaris i estar correctament tabulats.

  1. Fes un joc d'endevinar un número entre 1 i 100. A cada intent l'usuari rebrà la informació de si el nombre introduït és major o menor.
  2. Crea un script que agafi els arxius d'una carpeta que li indiqui l'usuari, crei una altra carpeta amb el mateix nom +"(2)" i copii tots els arxius però amb les lletres en minúscules.
  3. ...