Newsgroup: it.comp.os.dos
Titolo: (WSH) Lezione 1 : introduzione :  hello world : variabili : stringhe

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.

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)
-- 

 Aspetto la prossima puntata.
Aye... e' in lavorazione :) 

[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.

 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

 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... 

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.


 notevoli.
grazie e ciao

 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 /-\

 
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


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

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

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

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?


 
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...


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

 Anche a varese piove di brutto, 
ero lě ieri mattina per lavoro :)


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