Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

(WSH) Lezione 1 : introduzione : hello world : variabili : stringhe

16 views
Skip to first unread message

Franz aRTiglio

unread,
Sep 8, 2008, 10:26:54 PM9/8/08
to
Come anticipato inizio a postare un piccolo "corso" di windows scripting
host.

Piccola premessa: il corso e' a carattere temporalesco (in pratica quando ho
tempo e testa per scrivere.... senza cadenze prefissate), dato che lo
"scopo"
del corso e' dare a chi e' avvezzo ai batch un nuovo strumento, daro' ampio
risalto alla corrispettivita' di comandi e tecniche tra i due mondi.

I post saranno sempre intitolati con questa struttura:

(WSH) Lezione X : argomento : argomento : ecc ecc ecc

Domande di approfondimento sono SEMPRE le benvenute, ovviamente
pero' cercate di fare domande complete, meglio se accompagnate dal
codice del quale chiedete chiarimenti.
______________________________________________________________

Quello che originariamente si chiamava "Windows Scripting Host", per poi
divenire
"Windows Script Host" o piu' semplicemente "Windows Script", e' un
linguaggio
con moltissime attinenze al visual basic calssico (fino alla versione 6), al
punto
che ne ricalca struttura e sintassi nonche' buona parte dei comandi.

Da qui in poi "Visual Basic" verra' abbreviato in VB e "Windows Script"
verra'
abbreviato in WS, spesso pero' WS viene abbreviato in VBs (Visual Basic
script);
tenetene conto quando googlate.

(=BATCH )
Usero' questo tag per mostrare analogie dirette con il buon
vecchio batch, per esempio quando descrivero' il msgbox
troverete (=BATCH echo)

Le piu' significative differenze tra VB e WS sono:

WS non ha bisogno di compilatore/interprete, si scrive
con un semplice editor di testo come il Blocco Note.

WS e' totalmente incapace di "costruire" un'interfaccia
grafica: niente bottoni o form: le sue 2 uniche finestre
sul mondo sono il msgbox e inputbox (che vedremo
piu' avanti), ovviamente e' in gradi di ricevere comandi
da riga (=BATCH %1 %2 %3....).

Il WS e' un linguaggio "ad oggetti", la sua struttura prevede
il _punto_ come separatore tra l'oggetto e il suo metodo, qualora
il metodo preveda parametri, essi verranno forniti tra
parentesi tonde.

Per "metodo" si intende come si usera' l'oggetto, ad esempio
se l'oggetto e' la penna, i suoi metodi sono

aperta (si/no)
scrivi (testo da scrivere)

Quindi, per "scappucciare" la penna e scrivere "ciao", per poi
richiuderla scriveremmo:

penna.aperta(si)
penna.scrivi("ciao")
penna.aperta(no)

Come balza all'occhio, il "ciao" e' virgolettato, questa distinzione
e' indispensabile per comunicare al WS che "ciao" e' una stringa
e non una variabile, a differenza delle variabili BATCH che
vengono identificate dal simbolo percentuale %, le variabili
in WS sono definibili con nomi arbitrari come

pippo
pluto
LaMiaVariabile

In VB esistono diversi tipi di variabili, in WS invece tutte le variabili
sono di tipo variant, cio' significa che sono in grado di contenere
qualsiasi tipo di dato, anche se non e' necessario dimensionarle
(=BATCH set nomevariabile) e' buona norma dimensionarle
all'inizio dello script.

L'argomento variabili appare piuttosto spinoso, in realta' e' molto
semplice se si tengono in considerazione le seguenti affermazioni:

Le variabili in WS non hanno tipo: sono tutte variant.
Il nome delle variabili non e' sensibile al maiuscolo/minuscolo
(ciao, CIAO, cIaO, CIao ... sono la stessa IDENTICA cosa)

Poco piu' sopra ho menzionato la parola "stringhe": per
stringhe si intende tutto quello che e' rappresentato cosi' come
appare, per capirci:

Dim Messaggio
Messaggio = "Ciao"
msgbox Messaggio
wscript.quit

Copiate ed incollate le 4 righe qui sopra nel blocco note, poi
SALVA CON NOME ----> (TUTTI I FILE) ----> ciao.vbs

fate doppio click sul file appena creato, comparira' il nostro
primo "hello world" :)

Ora, per capire il concetto di stringa, faremo una modifica allo
script appena visto, sostituendo la seconda riga:

Dim Messaggio
Messaggio = "5+4"
msgbox Messaggio
wscript.quit

(salvate come fatto prima e doppiocliccate)

Al posto del ciao, e' comparso un 5+4, ora provate a
togliere le virgolette dalla seconda riga:

Dim Messaggio
Messaggio = 5+4
msgbox Messaggio
wscript.quit

(salvate doppiocliccate ecc.)

Cosa e' accaduto ? Quale e' la differenza ?
Semplice: come ho detto prima le virgolette delimitano
le stringhe, usandole comunichiamo a WS che desideriamo
che il testo venga trattato come testo e non come numero.

Attenzione !

Stringhe e numeri NON vanno d'accordo, non si puo' assegnare
contemporaneamente ad una variabile stringhe e numeri, a meno
che questi ultimi non vengano convertiti in stringa.
Un errore comune del neofita e' considerare

"4"

come un numero, ma in realta', essendo esso virgolettato, e'
UNA STRINGA CHE RAPPRESENTA IL NUMERO 4: una stringa
alla pari di "a" "Pippo" e "CIAO CIAO CIAO".

I numeri sopportano operazioni matematiche, le stringhe NO.

Le stringhe sopportano il concatenamento, avendo piu' variabili
che contengano stringhe e' possibile "incollarle" tra loro utilizzando
il simbolo &, e' possibile utilizzare anche il segno + per la
medesima operazione:

Dim Parte1
Dim Parte2
Dim Messaggio
Parte1 = "ciao"
Parte2 = " a tutti"
Messaggio = Parte1 & Parte2
msgbox Messaggio
wscript.quit

Dim Parte1
Dim Parte2
Dim Messaggio
Parte1 = "ciao"
Parte2 = " a tutti"
Messaggio = Parte1 + Parte2
msgbox Messaggio
wscript.quit

Il risultato dei 2 script qui sopra e' identici, ma e' SCONSIGLIATO
usare il segno + per concatenare le stringhe: in uno script lungo
potreste trovarvi a cercare di capire dove si genera un'errore, nel
secondo caso potreste dover frullare il codice alla ricerca delle righe
che assegnano Parte1 e Parte2 per capire se sono stringhe o
numeri; usando il simbolo & capireste al volo che le due variabili
devono contenere delle stringhe.

E' tuttavia possibile convertire stringhe in numero e viceversa, ma
affronteremo l'argomento piu' avanti.

Esercizio:

Dim Messaggio
Messaggio = "blabla"
msgbox Messaggio
wscript.quit

Sostituite "blabla" con i seguenti dati

"Ciao" & " belli"
Ciao & belli
"5" & "4"
"5" + "4"
5 + 4

Ed osservatene il risultato, provate poi con

"dato" + 4
5 + "dato"

Queste ultime 2 righe provocheranno 2 messaggi di errore, cercate
di modificare lo script per "riaparare" l'errore e ottenere 9 come
risultato delle 2 operazioni utilizzando "dato" come variabile.

NON postate gli script corretti per dare a tutti la possibilita' di capirlo
da soli: commenti, critiche e insulti sono ben accetti.

Nella prox lezione affronteremo msgbox, inputbox, conversione
stringa/numeri, manipolazione stringhe e rudimenti di funzioni.


Reventlov

unread,
Sep 9, 2008, 12:35:52 PM9/9/08
to
Il giorno Tue, 9 Sep 2008 04:26:54 +0200, "Franz aRTiglio" <fran...@N0SPAMtin.it> ha
scritto:

>Piccola premessa: il corso e' a carattere temporalesco

Ho capito, scrivi quando fuori piove e non puoi andare fuori a fare una passeggiata...

Comunque mi sembra bello chiaro anche per chi si avvicina alla programmazione in questa
occasione. Tanto più che vbscript è preinstallato e non serve null'altro per cominciare a
scrivere codice.
Per fare un "hello world" in vb.net bisogna invece installare un dvd.
Complimenti per la trasmissione.
Aspetto la prossima puntata.
Giovanni.

--
Giovanni Cenati (Bergamo, Italy)
Write to "Reventlov" at katamail com
http://digilander.libero.it/Cenati (Esempi e programmi in VbScript)
--

Franz aRTiglio

unread,
Sep 9, 2008, 3:19:42 PM9/9/08
to
Reventlov wrote:

> Comunque mi sembra bello chiaro[cut]
> Complimenti per la trasmissione.

Grazie del feedback :) avevo il timore di essere stato oscuro in
piu' punti... spero che anche per altre persone appaia
"semplice" come e' apparso a te :)

> Aspetto la prossima puntata.

Aye... e' in lavorazione :)


Franz aRTiglio

unread,
Sep 11, 2008, 7:57:34 AM9/11/08
to
[cut]

P.f. datemi un po' di feedback :)

Attualmente l'unico che mi ha scritto e' competente di WS, ma
cosi' e' un dialogo tra sordi.... vorrei un po' di commenti da
chi di WS non capisce nulla (o quasi).... insomma vorrei capire
se il metodo e' accettabile o meno...

Grazie.


DřctřR_DřřM

unread,
Sep 14, 2008, 5:23:45 AM9/14/08
to

Eccone uno (che non ne sa niente!). Secondo me la lezione era fatta
per bene, poi, ovviamente, non possono esservi grosse difficoltà
di comprensione per la lezione introduttiva. Continua così!

> Grazie.

Grazie a te (p.s.: hai da suggerire qualche editor in particolare
che faccia qualcosa di simile all'editor di visual basic (autocompletamento,
formattazione delle parole chiavi, etc..) o usi notepad?)

Ciao


Franz aRTiglio

unread,
Sep 14, 2008, 3:16:25 PM9/14/08
to
DřctřR_DřřM wrote:

> Grazie a te (p.s.: hai da suggerire qualche editor in particolare
> che faccia qualcosa di simile all'editor di visual basic
> (autocompletamento,
> formattazione delle parole chiavi, etc..) o usi notepad?)

Io uso notepad, non ho notizia di editor dedicati ma non
mi stupirei di trovarne in rete...


Reventlov

unread,
Sep 15, 2008, 4:44:57 PM9/15/08
to
Il giorno Sun, 14 Sep 2008 21:16:25 +0200, "Franz aRTiglio" <fran...@N0SPAMtin.it> ha
scritto:

C'è MSE7 (microsoft script editor) che è installabile a richiesta dal cd di office, sotto
una dicitura poco chiara di "strumenti di office - modifica origine html" (almeno nel mio
office 2000, in cui il programma è in una versione precedente e si chiama mse.exe).
Ha il completamento automatico del codice in modo da riconoscere già alcuni errori.
Inoltre suggerisce la sintassi dei comandi. Se scrivi msgbox ti suggerisce quali parametri
si aspetta questo comando.

Poi ci sono degli editor "dedicati" come vbsedit (che è anche portabile, cioè non è da
installare) ed altri meno sofisticati che magari colorano le parole chiave ma non
suggeriscono la sintassi.

C'è vbseditor di www.koansoftware.com che è un unico file di 400 kb. Gratuito. Suggerisce
il completamento del codice con la sintassi del comando.

Comunque il notepad ed il file di help sono più che sufficienti per scrivere cose
notevoli.

DřctřR_DřřM

unread,
Sep 17, 2008, 12:22:25 PM9/17/08
to
> C'è MSE7 (microsoft script editor) che è installabile a richiesta dal cd di office, sotto
> una dicitura poco chiara di "strumenti di office - modifica origine html" (almeno nel mio
> office 2000, in cui il programma è in una versione precedente e si chiama mse.exe).
> Ha il completamento automatico del codice in modo da riconoscere già alcuni errori.
> Inoltre suggerisce la sintassi dei comandi. Se scrivi msgbox ti suggerisce quali parametri
> si aspetta questo comando.

Questo credo di averlo in qualche modo già installato anche se non mi ha fatto una
grande impressione (sempre che sia quel che penso).

> Poi ci sono degli editor "dedicati" come vbsedit (che è anche portabile, cioè non è da
> installare) ed altri meno sofisticati che magari colorano le parole chiave ma non
> suggeriscono la sintassi.

In effetti uso già un certo sci.exe che fa ciò (oltre a "supportare" svariati altri linguaggi).

> C'è vbseditor di www.koansoftware.com che è un unico file di 400 kb. Gratuito. Suggerisce
> il completamento del codice con la sintassi del comando.

Non mancherò di dare un'occhiata appena posso

> Comunque il notepad ed il file di help sono più che sufficienti per scrivere cose
> notevoli.

grazie e ciao


Ammammata

unread,
Sep 22, 2008, 5:39:28 AM9/22/08
to
"Franz aRTiglio" <fran...@N0SPAMtin.it> wrote in
news:48c907b7$0$1085$4faf...@reader1.news.tin.it:

> vorrei un po' di commenti da
> chi di WS non capisce nulla (o quasi)....

interessante

aspetto la parte di gestione dei file, nel mio caso quasi sempre txt che
devo smadruppare per poi ridarli in pasto all'applicativo

--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\

Ammammata

unread,
Sep 22, 2008, 5:57:53 AM9/22/08
to
"Franz aRTiglio" <fran...@N0SPAMtin.it> wrote in
news:48cd630c$0$40307$4faf...@reader5.news.tin.it:

> Io uso notepad, non ho notizia di editor dedicati ma non
> mi stupirei di trovarne in rete...
>
>

suggerisco, tra gli altri, notepad++: non è dedicato ma evidenzia la
sintassi ed è 'a gratis'

poi:
RJ TextEd
EditPad Lite
SuperEdi

qui: http://news.wintricks.it/cerca/

inserire come ricerca: editor di testo

Ammammata

unread,
Sep 22, 2008, 5:59:20 AM9/22/08
to
no...@no.void (Reventlov) wrote in
news:48cec62...@powernews.libero.it:

> C'č vbseditor di www.koansoftware.com che č un unico file di 400 kb.


> Gratuito. Suggerisce il completamento del codice con la sintassi del
> comando.
>

ftp://ftp.koansoftware.com/public/freeware/VBSEditor/

Ammammata

unread,
Sep 26, 2008, 4:54:51 AM9/26/08
to
"Franz aRTiglio" <fran...@N0SPAMtin.it> wrote in
news:48c5def3$0$41658$4faf...@reader4.news.tin.it:

> I post saranno sempre intitolati con questa struttura:
>
> (WSH) Lezione X : argomento : argomento : ecc ecc ecc
>
>

bene... basta che non sia una volta WSH e la volta dopp WHS :P

Franz aRTiglio

unread,
Sep 26, 2008, 5:28:15 PM9/26/08
to
Ammammata wrote:
> "Franz aRTiglio" <fran...@N0SPAMtin.it> wrote in
> news:48c5def3$0$41658$4faf...@reader4.news.tin.it:
>
>> I post saranno sempre intitolati con questa struttura:
>>
>> (WSH) Lezione X : argomento : argomento : ecc ecc ecc
>>
>>
>
> bene... basta che non sia una volta WSH e la volta dopp WHS :P

Azzz....


Reventlov

unread,
Nov 4, 2008, 5:54:12 PM11/4/08
to
Il giorno Tue, 9 Sep 2008 04:26:54 +0200, "Franz aRTiglio" <fran...@N0SPAMtin.it> ha
scritto:

>Come anticipato inizio a postare un piccolo "corso" di windows scripting
>host.
>Piccola premessa: il corso e' a carattere temporalesco

Piove a dirotto da diversi giorni qui dalle mie parti...
Può significare che la terza puntata è in arrivo?

Ammammata

unread,
Nov 5, 2008, 11:37:46 AM11/5/08
to
no...@no.void (Reventlov) wrote in
news:4910d25c...@powernews.libero.it:

> Piove a dirotto da diversi giorni qui dalle mie parti...
> Può significare che la terza puntata è in arrivo?
>
>

già, anche qui in zona Como :)
spero che Franz (ad onta del nome) non sia siculo... mia zia (da Mazara
del Vallo) mi ha detto che c'erano 31 gradi l'altro ieri e la gente se ne
andava in spiaggia...

Franz aRTiglio

unread,
Nov 5, 2008, 3:58:40 PM11/5/08
to
Ammammata wrote:

>> Piove a dirotto da diversi giorni qui dalle mie parti...
>> Può significare che la terza puntata è in arrivo?
>
> già, anche qui in zona Como :)
> spero che Franz (ad onta del nome) non sia siculo... mia zia (da Mazara
> del Vallo) mi ha detto che c'erano 31 gradi l'altro ieri e la gente se ne
> andava in spiaggia...

Anche a varese piove di brutto, ma la casa mi assorbe (mi sto' trasferendo
in zona lentate sul seveso)... portate pazyenza....


Ammammata

unread,
Nov 6, 2008, 10:56:58 AM11/6/08
to
"Franz aRTiglio" <fran...@N0SPAMtin.it> wrote in
news:49120902$0$1077$4faf...@reader2.news.tin.it:

> Anche a varese piove di brutto,

ero lě ieri mattina per lavoro :)

Reventlov

unread,
Jan 10, 2010, 5:19:23 PM1/10/10
to
Per chi non vuole usare il link di Badrune http://snipurl.com/tzrqu
ecco la prima lezione pubblicata da Franz aRTiglio.


Il giorno Tue, 9 Sep 2008 04:26:54 +0200, "Franz aRTiglio" <fran...@N0SPAMtin.it> ha
scritto:

>Come anticipato inizio a postare un piccolo "corso" di windows scripting

--

0 new messages