Discussione:
(WSH) Lezione 1 : introduzione : hello world : variabili : stringhe
(troppo vecchio per rispondere)
Franz aRTiglio
2008-09-09 02:26:54 UTC
Permalink
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
2008-09-09 16:35:52 UTC
Permalink
Post by Franz aRTiglio
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
2008-09-09 19:19:42 UTC
Permalink
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
2008-09-11 11:57:34 UTC
Permalink
[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
2008-09-14 09:23:45 UTC
Permalink
Post by Franz aRTiglio
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...
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ì!
Post by Franz aRTiglio
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
2008-09-14 19:16:25 UTC
Permalink
Post by DøctøR_DøøM
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
2008-09-15 20:44:57 UTC
Permalink
Post by Franz aRTiglio
Post by DøctøR_DøøM
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...
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.
--
Giovanni Cenati (Bergamo, Italy)
Write to "Reventlov" at katamail com
http://digilander.libero.it/Cenati (Esempi e programmi in VbScript)
--
DøctøR_DøøM
2008-09-17 16:22:25 UTC
Permalink
Post by Reventlov
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).
Post by Reventlov
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).
Post by Reventlov
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
Post by Reventlov
Comunque il notepad ed il file di help sono più che sufficienti per scrivere cose
notevoli.
grazie e ciao
Ammammata
2008-09-22 09:59:20 UTC
Permalink
Post by Reventlov
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/
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
Ammammata
2008-09-22 09:57:53 UTC
Permalink
Post by Franz aRTiglio
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
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
Ammammata
2008-09-22 09:39:28 UTC
Permalink
Post by Franz aRTiglio
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
2008-09-26 08:54:51 UTC
Permalink
Post by Franz aRTiglio
(WSH) Lezione X : argomento : argomento : ecc ecc ecc
bene... basta che non sia una volta WSH e la volta dopp WHS :P
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
Franz aRTiglio
2008-09-26 21:28:15 UTC
Permalink
Post by Ammammata
Post by Franz aRTiglio
(WSH) Lezione X : argomento : argomento : ecc ecc ecc
bene... basta che non sia una volta WSH e la volta dopp WHS :P
Azzz....
Reventlov
2008-11-04 22:54:12 UTC
Permalink
Post by Franz aRTiglio
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?
--
Giovanni Cenati (Bergamo, Italy)
Write to "Reventlov" at katamail com
http://digilander.libero.it/Cenati (Esempi e programmi in VbScript)
--
Ammammata
2008-11-05 16:37:46 UTC
Permalink
Post by Reventlov
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...
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
Franz aRTiglio
2008-11-05 20:58:40 UTC
Permalink
Post by Ammammata
Post by Reventlov
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
2008-11-06 15:56:58 UTC
Permalink
Post by Franz aRTiglio
Anche a varese piove di brutto,
ero lì ieri mattina per lavoro :)
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
Reventlov
2010-01-10 22:19:23 UTC
Permalink
Per chi non vuole usare il link di Badrune http://snipurl.com/tzrqu
ecco la prima lezione pubblicata da Franz aRTiglio.
Post by Franz aRTiglio
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.
(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)
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
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
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
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
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
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
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.
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.
--
Giovanni Cenati (Bergamo, Italy)
Write to "Reventlov" at katamail com
http://digilander.libero.it/Cenati (Esempi e programmi in VbScript)
--
Continua a leggere su narkive:
Loading...