|
Bene veniamo adesso alle cose un po' più interattive, ossia come far scegliere
qualcosa all'utente, per questo si deve utilizzare il comando "choice" che in
pratica è un file denominato "choice.com" presente nel Dos dalla versione
5.0 in poi.
Il comando "choice" ha i seguenti parametri: C, N e T.
Il primo, C, imposta le lettere che l'utente ha a disposizione per fare una scelta, N dice
al comando se visualizzare o meno quelle lettere e T aspetta un numero predefinito di secondi
e poi esegue una lettera preimpostata.
La sintassi completa è:
choice /C:[elenco lettere]/N/Tn,C prompt
Ossia permettere di scegliere tra una lista di caratteri, non li visualizza e dopo un tot
di secondi prende che l'utente abbia scelto il carattere C e stampa la stringa prompt.
Chiaramente i parametri N e T possono essere omessi; veramente si può omettere anche
C in questo caso i caratteri da cui si può scegliere di base sono il Si o il No
ossia S e N però variano a seconda della lingua del sistema operativo ad esempio
la versione italiana permette di scegliere tra S e N, quella inglese tra Y e N e la francese
tra O e N. Quindi attenzione!
Come si fa però a far eseguire comandi appropriati per ogni scelta?
Per far questo si ricorre alle etichette ed al costrutto if
errorlevel goto.
Le etichette hanno un nome e si riconoscono perché iniziano con i due punti ":".
Mentre bisogna sapere che, molti comandi Dos ed eseguibili hanno un parametro di ritorno,
questo parametro può essere intercettato e si può saltare all'etichetta voluta,
in pratica una etichetta è un punto che io posso raggiungere tramite il costrutto
if errorlevel goto, e non solo, a dire il vero
l'unica precisazione da fare è che le etichette vengono eseguite in cascata, ossia
se ce ne sono due di seguito e il nostro if salta alla prima, eseguirà poi anche
la seconda, per evitare che questo accada è necessario mettere a fine file una etichetta
"fine" e saltarci dopo il codice di ogni nostra etichetta col comando goto
(in inglese go to, vuol dire "vai a").
Per esempio il comando choice restituisce come parametro di ritorno il valore numerico
corrispondente alla posizione della lettera premuta ossia se attivate uno choice con la
lista abc, il parametro di ritorno varrà 1 se premete la "a", 2 la "b"
e 3 la "c".
Un ultima nota, prima di passare ad un esempio pratico, è che il costrutto errorlevel
per funzionare correttamente deve essere strutturato in ordine decrescente ossia da 3 verso
1 nel nostro caso.
Un'altra cosa, negli script batch è possibile inserire dei commenti, basta che la
stringa inizi con il comando rem, mentre se si
vuole attendere la pressione di un tasto si può utilizzare il comando pause,
che però stampa premi un tasto se non si vuol far scrivere nulla basta digitare
pause >nul.
Supponiamo di voler realizzare un piccolo menù che esegua il comando dir, Edit oppure
nulla:
--- Menu.Bat
@echo off
echo Menù.. scegli!
Choice /C:den Dir,Edit,Nulla
If errorlevel 3 goto dirr
If errorlevel 2 goto editt
If errorlevel 1 goto nulla
:dirr
dir
goto nulla
:editt
edit
goto nulla
:nulla
--- Fine!
Abbastanza chiaro! È come far saltare i comandi alla "label" scelta
!
Un ulteriore uso del costrutto if è if exist goto
che funziona in modo analogo, solo che invece di controllare un risultato di un'eseguibile,
salta all'etichetta se il file specificato esiste oppure se si usa il if
not exist salta se non esiste... facciamo un esempio:
--- Esiste.Bat
@echo off
REM controlla che esiste autoexec.bat
if exist c:\autoexec.bat goto si
if not exist c:\autoexec.bat goto no
:si
echo Autoexec.bat esiste
goto fine
:no
echo Autoexec.bat non esiste
:fine
--- Fine!
Un'altra cosa che si può fare con gli script batch è passargli dei parametri
da riga di comando, questo si fa in maniera molto semplice, ossia la prima variabile passata
ha indice uno e negli script batch le variabili sono indicate con il percento davanti quindi
%1 è il primo valore passato da riga di comando mentre %2 sarà il secondo
e così via
questi valori sono di tipo stringa ossia caratteri presi dall'alfabeto
ascii, ovvero lettere, numeri e simboli vari tutti fattibili con la tastiera.
Questo serviva a introdurre l'ultimo utilizzo del costrutto if, ossia l'uguaglianza o la
disuguaglianza di due stringhe.
Un altro uso del costrutto if è la condizione di uguaglianza tra stringhe che si
costruisce in questo modo if stringa1 == stringa2 goto
comando; chiaramente mettendo un NOT davanti al confronto si ottiene una disuguaglianza
es. if not stringa1 == stringa2.
Ad esempio:
--- Uguale.bat
@echo off
if %1 == %2 goto uguale
if not %1 == %2 goto diverso
:uguale
echo %1 è uguale a %2
goto fine
:diverso
echo %1 è diverso da %2
:fine
--- Fine!
Questo script controlla due stringhe passate da riga di comando per vederlo funzionare
devi scrivere qualcosa del genere:
uguale abc abc
oppure:
uguale abc cde
Un ultimo comando che può risultare utile è il comando CALL che consente
di eseguire un altro script all'interno del chiamante ossia l'esecuzione dello script chiamante
viene eseguita dopo aver eseguito lo script chiamato, chiaramente partendo dal punto dove
si trova il comando CALL.
Mentre l'ultimo costrutto utile negli script che prenderò in esame in questa guida
è il costrutto FOR %variabile IN (tipo di file)
DO comando
Cioè la variabile assume il nome di ogni file del tipo specificato tra parentesi
ed esegue un comando. Possiamo ad esempio fare uno script lista che funziona come il comando
dir:
--- Lista.Bat
@echo off
echo Ricerchero tutti i file con estenzione %1
for %%i in (%1) do echo %%i
--- Fine
Ossia la variabile i (nei cicli if tutte le variabili devono essere precedute da due simboli
di percentuale "%") assume di volta in volto il nome del file specificato dal
tipo %1, e ne stampa a video il valore.
Ad esempio per avere la lista di tutti i file con estensione "TXT" basterà
digitare:
C:\DOS\>lista *.txt
Questo è tutto
|