008 DOS – Comandi per Script

30 Dicembre, 2023 (11:59) | Windows | By: sargonsei

008 DOS – Comandi per Script

Come si è visto nei capitoli precedenti di questi appunti per comandi DOS, qualunque comando DOS impartibile da riga di comando può essere scritto all’interno di un file di testo avente estensione .bat che prende il nome di “script”; successivamente, avviando lo script, verranno eseguiti uno dopo l’altro tutte le istruzioni DOS scritte in ogni singola riga dello script.
E’ bene sapere che esistono comandi DOS i quali, per un motivo o per l’altro, hanno senso solo se scritti in uno script; questo capitolo è dedicato principalmente a questi comandi.
Per una migliore comprensione del testo, si ricorda che il DOS non è case-sensitive, quindi non fa differenza fra lettere maiuscole o minuscole, quindi è possibile sfruttare questa caratteristica per agevolare la comprensione del testo.

A) Lanciare uno script DOS
In gergo informatico, la parola “lanciare” significa avviare, eseguire, far funzionare.
Uno script DOS può essere lanciato solo se il suo nome è seguito dall’estensione .bat.

A1) Cliccare ripetutamente sull’icona del file nomeScript.bat
Il modo più semplice per avviare uno script DOS consiste nel sovrapporre il puntatore del mouse all’icona dello script, e cliccare ripetutamente col tasto destro del mouse. Così facendo, l’interprete del DOS aprirà lo script, lo eseguirà, e poi lo chiuderà, di conseguenza, se lo script prevede la visualizzazione di messaggi all’interno del terminale DOS, questi messaggi non saranno visibili.

A2) Aprire un terminale DOS nella cartella di lavoro ed impartire nomeScript.bat
Un ulteriore metodo per lanciare uno script DOS consiste nell’aprire un terminale DOS nella cartella di lavoro in cui si trova lo script, e digitare il nome dello script come se fosse un comando; in questo modo, lo script verrà eseguito, ed i messaggi creati dallo script compariranno nel terminale, il quale non si chiuderà automaticamente al termine dello script e l’utente potrà chiudere il terminale DOS se e quando lo riterrà opportuno.

A3) Aprire un terminale DOS ed impartire C:\Percorso\Completo\nomeScript.bat
Un ulteriore metodo per lanciare uno script DOS consiste nell’aprire un terminale DOS in una qualsiasi cartella del computer, e digitare, come se fosse un comando, il nome dello script preceduto dal percorso completo della cartella di lavoro; in questo modo, lo script verrà eseguito, ed i messaggi creati dallo script compariranno nel terminale, il quale non si chiuderà automaticamente al termine dello script e l’utente potrà chiudere il terminale DOS se e quando lo riterrà opportuno.

B) DOS – Terminare o interrompere l’esecuzione di uno script DOS
Uno script DOS termina senza messaggi di errore dopo aver terminato di eseguire l’ultima riga dello script stesso; qualora l’utente intenda far terminare l’esecuzione dello script a seguito dell’esecuzione di un’istruzione che non si trova alla fine dello script, potrà scrivere, come ultima riga dello script, una determinata etichetta e farà in modo che l’ultima istruzione da eseguire prima di fermarsi sia seguita dal comando GOTO che punta all’etichette posta alla fine dello script.
Nel caso in cui si desideri forzare l’interruzione dello script prima del termine dello script stesso, occorre fare in modo che lo script esegua una delle istruzioni seguenti:
exit & REM Termina lo script e chiude il terminale
exit /B & REM Termina lo script (o la subroutine) senza chiudere il terminale
exit /B & REM Termina lo script (o la subroutine) senza chiudere il terminale e setta il valore della variabile %ERRORLEVEL%

oppure occorre digitare la combinazione di tasti
[Ctrl]+[C] oppure [Ctrl]+[Pausa/Interr].
Nel caso in cui una riga dello script contenga un comando che obbliga lo script ad eseguire una riga precedente, lo script potrebbe entrare in un loop infinito e, per fermarne l’esecuzione, sarà necessario forzarne l’interruzione digitando la combinazione di tasti
[Ctrl]+[C] oppure [Ctrl]+[Pausa/Interr].

C) Comando @ECHO OFF
Se non diversamente specificato, l’esecuzione di uno script DOS comporta che ogni riga contenente istruzioni, prima di essere eseguita, venga visualizzata sul terminale. Il comando @ECHO OFF serve ad impedire che le righe di istruzioni vengano visualizzate, ed è efficace per la riga dello script in cui si trova il comando stesso ed in tutte le righe seguenti, fino a quando si raggiunge il comando @ECHO ON, ovvero (nel caso in cui lo script DOS non contenga il comando @ECHO ON) fino alla fine dello script.

D) Comando IF (comando1) ELSE (comando2)
Il comando IF consente di specificare quali comandi eseguire quando una data condizione è vera. Può essere accoppiato al comando ELSE che consente di specificare quali comandi eseguire se la condizione specificata non si verifica. I comandi da eseguire quando si determinano determinate condizioni, devono essere racchiusi fra parentesi tonde, ma non è obbligatorio che siano su un’unica riga; per una migliore leggibilità, si consiglia di:
aprire la parentesi tonda ed andare a capo, scrivere le istruzioni ed andare a capo, infine chiudere la parentesi tonda ed andare a capo.
Gli operatori per confrontare valori nell’esecuzione del comando IF sono: == uguale; EQU uguale; NEQ diverso; LSS meno di; LEQ meno o uguale di; GTR più grande di; GEQ più grande o uguale.
Segue un esempio dell’utilizzo di questo comando all’interno di uno script
@echo off & rem Disattiva la visualizzazione di ogni singolo comando prima dell'esecuzione
@color 0a & rem Imposta colore dello sfondo e delle scritte all'interno del terminale
@title Messaggio & rem Imposta messaggio da visualizzare nella barra del titolo
set "A1=Mare" & rem imposta la variabile stringa A1
IF %A1%==Mare (echo Questo messaggio apparira' solo se la variabile A1 contiene Mare)
IF %A1%==Montagna (
echo Questo messaggio apparira' solo se se la variabile A1 contiene Montagna
echo Anche questo messaggio apparira' solo se se la variabile A1 contiene Montagna
) ELSE (
echo Questo messaggio apparira' solo se se la variabile A1 non contiene Montagna
echo Anche questo messaggio apparira' solo se se la variabile A1 non contiene Montagna
)
echo Questo messaggio apparira' sempre, indipendentemente dal fatto che la condizione sia o non sia soddisfatta.
IF Mare==Montagna (
Questa riga di testo non verra' mai eseguita, in quanto Mare e' sempre diverso da Montagna
)

E) Comando GOTO ETICHETTA :ETICHETTA
Se non diversamente specificato, comandi inseriti in uno script DOS vengono eseguiti nell’ordine in cui si trovano all’interno dello script, quindi da sinistra a destra e riga per riga dall’alto in basso. Il comando GOTO consente di specificare il punto dello script in cui si trova il prossimo comando da eseguire.
Il comando GOTO deve sempre essere associato ad una etichetta che, all’interno dello script, deve comparire una volta preceduta da [:] (senza parentesi quadre), ed una volta preceduta dal comando GOTO.
@echo off & rem Disattiva la visualizzazione di ogni singolo comando prima dell'esecuzione
@color 0a & rem Imposta colore dello sfondo e delle scritte all'interno del terminale
@title Messaggio & rem Imposta messaggio da visualizzare nella barra del titolo
set /A N1=10 & rem Imposta la variabile numerica A1
GOTO START & rem Impone al DOS di proseguire a partire dall'unica riga che contiene :START
In fase di esecuzione dello script DOS
queste righe non verranno mai lette
quindi possono contenere qualsiasi tipo di commento
:START & rem Etichetta che stabilisce la riga a cui punta il comando GOTO START
echo La variabile N1 ora vale %N1% & rem Visualizza il contenuto della variabile numerica N1
if %N1% GTR 0 (
REM se è vero che N1>0, lo script procedere dalla riga successiva
set /A N1=%N1%-1 & rem la variabile N1 viene decrementata di 1
call echo La variabile N1 ora vale %N1% & rem Visualizza il contenuto della variabile numerica N1
echo Per terminare, digita [Ctrl]+[C] oppure [Ctrl]+[Pausa/Interr]
GOTO START & rem Impone al DOS di proseguire a partire dall'unica riga che inizia con l'etichetta :START
) & REM se è falso che N1>0, lo script DOS ricomincia da qui