005 DOS – Manipolazione numeri: variabili e calcoli

23 Dicembre, 2023 (22:28) | Windows | By: sargonsei

005 DOS – Manipolazione numeri: variabili e calcoli

Il DOS prevede l’utilizzo di variabili previo inizializzazione delle stesse, inizializzazione che deve avvenire almeno una volta per ogni variabile quando viene utilizzata per la prima volta. In fase di inizializzazione, l’utente deve decidere se si tratta di variabili numeriche o alfanumeriche, e stabilirne il contenuto iniziale. I nomi delle variabili DOS possono avere una lunghezza massima di 64 byte e il primo carattere deve essere una lettera o uno dei caratteri @, # o $; i caratteri successivi possono essere qualsiasi combinazione di lettere, numeri, caratteri speciali tipo _ purché non punteggiatura.
Nei sistemi Microsoft Windows e MS-DOS non viene fatta distinzione tra lettere maiuscole e minuscole nei nomi delle variabili d’ambiente, per cui “PATH” equivale a “Path” e “path”; è tuttavia comune specificare i nomi esclusivamente con lettere maiuscole, ed usare solo lettere (e non ad esempio cifre).

A) DOS – Inizializzare variabili numeriche
Nel DOS, le “variabili numeriche” possono possono contenere solo numeri interi completi del segno, quindi possono essere numeri negativi, ma non possono essere numeri con decimali. L’inizializzazione di variabili numeriche prevede che, prima di essere richiamata, ogni singola variabile numerica debba essere scritta preceduta dal comando SET /A, seguita dal simbolo di uguaglianza = e, infine, il valore della variabile; per esempio:
SET /A N1=10& :: Inizializza la variabile N1 come una variabile numerica contenente [10] (senza parentesi quadre)
SET /A N2= 7 & :: Inizializza la variabile N2 come una variabile numerica contenente [7] (senza parentesi quadre)
SET /A N3= 1,2& :: Inizializza la variabile N3 come una variabile numerica contenente [1] (senza parentesi quadre)
SET /A N4=3.4 & :: Inizializza la variabile N4 come una variabile numerica contenente [3] (senza parentesi quadre) e produce errore [Operatore mancante] (senza parentesi quadre)
SET /A N5 =-8& :: Inizializza la variabile N5 come una variabile numerica contenente [-8] (senza parentesi quadre)
SET /A N6="9" & :: Inizializza la variabile N6 come una variabile stringa contenente [9] (senza parentesi quadre)
SET /A "N7=8" & :: Inizializza la variabile N7 come una variabile stringa contenente [8] (senza parentesi quadre)

L’inizializzazione di variabili numeriche da terminale comporta che, dopo l’esecuzione della riga di comandi DOS, sul terminale compaia il nuovo valore della variabile numerica suddetta. Ciò è evitabile ponendo la stringa [> nul 2>&1] (senza parentesi quadre) subito dopo l’inizializzazione di una vartiabile. Segue un esempio di come varia l’output del terminale in fase di inizializzazione di variabile numerica numerica nei due casi.

>set /a N8=100 & rem Inizializza la variabile N8 come una variabile numerica contenente [100] (senza parentesi quadre)
100
>set /a N8=100 > nul 2>&1 & rem Inizializza la variabile N8 come una variabile numerica contenente [100] (senza parentesi quadre)

>

.
B) DOS – Calcolare somma di due numeri interi
Per mettere la somma di 2 variabili numeriche all’interno di una variabile numerica, occorre usare un’istruzione tipo:
[Var=Var1+Var2] (senza parentesi quadre). Se la variabile finale non è stata già inizializzata, la si può inizializzare contestualmente al concatenamento.
Segue uno script DOS che, fra le altre cose, calcola la somma di 2 numeri.
@echo off & :: Disattiva la visualizzazione di messaggi nell'output.
set /A In1=0 & :: Inizializza la variabile In1 come variabile numerica
set /A In2=0 & :: Inizializza la variabile In2 come variabile numerica
set /P In1=Digita primo addendo: & :: Inizializza la variabile In1 come variabile numerica contenente l'input da tastiera
set /P In2=Digita secondo addendo: & :: Inizializza la variabile In2 come variabile numerica contenente l'input da tastiera
SET /A N1=In1+In2 & :: Inizializza la variabile N1 come variabile numerica contenente In1+In2
set "S1=(%In1%+%In2%)=%N1%" & :: Inizializza variabile stringa S1 contenente variabili numeriche concatenate
echo %S1% & :: Visualizza il contenuto della variabile S1

C) DOS – Calcolare differenza di due numeri interi
Per mettere la differenza di 2 variabili numeriche all’interno di una variabile numerica, occorre usare un’istruzione tipo:
[Var=Var1-Var2] (senza parentesi quadre). Se la variabile finale non è stata già inizializzata, la si può inizializzare contestualmente al concatenamento.
Segue uno script DOS che, fra le altre cose, calcola la differenza di 2 numeri.
@echo off & :: Disattiva la visualizzazione di messaggi nell'output.
set /A In1=0 & :: Inizializza la variabile In1 come variabile numerica
set /A In2=0 & :: Inizializza la variabile In2 come variabile numerica
set /P In1=Digita minuendo: & :: Inizializza la variabile In1 come variabile numerica contenente l'input da tastiera
set /P In2=Digita sottraendo: & :: Inizializza la variabile In2 come variabile numerica contenente l'input da tastiera
SET /A N1=In1-In2 & :: Inizializza la variabile N1 come variabile numerica contenente In1-In2
set "S1=(%In1%-%In2%)=%N1%" & :: Inizializza variabile stringa S1 contenente variabili numeriche concatenate
echo %S1% & :: Visualizza il contenuto della variabile S1

D) DOS – Calcolare il prodotto di due numeri interi
Per mettere il prodotto di 2 variabili numeriche all’interno di una variabile numerica, occorre usare un’istruzione tipo:
[Var=Var1*Var2] (senza parentesi quadre). Se la variabile finale non è stata già inizializzata, la si può inizializzare contestualmente al concatenamento.
Segue uno script DOS che, fra le altre cose, calcola il prodotto di 2 numeri.
@echo off & :: Disattiva la visualizzazione di messaggi nell'output.
set /A In1=0 & :: Inizializza la variabile In1 come variabile numerica
set /A In2=0 & :: Inizializza la variabile In2 come variabile numerica
set /P In1=Digita moltiplicando: & :: Inizializza la variabile In1 come variabile numerica contenente l'input da tastiera
set /P In2=Digita moltiplicatore: & :: Inizializza la variabile In2 come variabile numerica contenente l'input da tastiera
SET /A N1=In1*In2 & :: Inizializza la variabile N1 come variabile numerica contenente In1xIn2
set "S1=(%In1%x%In2%)=%N1%" & :: Inizializza variabile stringa S1 contenente variabili numeriche concatenate
echo %S1% & :: Visualizza il contenuto della variabile S1

E) DOS – Calcolare il quoziente di due numeri interi
Per mettere il prodotto di 2 variabili numeriche all’interno di una variabile numerica, occorre usare un’istruzione tipo:
[Var=Var1/Var2] (senza parentesi quadre). Se la variabile finale non è stata già inizializzata, la si può inizializzare contestualmente al concatenamento.
Segue uno script DOS che, fra le altre cose, calcola il prodotto di 2 numeri.
@echo off & :: Disattiva la visualizzazione di messaggi nell'output.
set /A In1=0 & :: Inizializza la variabile In1 come variabile numerica
set /A In2=0 & :: Inizializza la variabile In2 come variabile numerica
set /P In1=Digita dividendo: & :: Inizializza la variabile In1 come variabile numerica contenente l'input da tastiera
set /P In2=Digita divisore: & :: Inizializza la variabile In2 come variabile numerica contenente l'input da tastiera
SET /A N1=In1/In2 & :: Inizializza la variabile N1 come variabile numerica contenente In1:In2
SET /A N2=In1%In2 & :: Inizializza la variabile N1 come variabile numerica contenente In1%In2
set "S1=(%In1%:%In2%)=%N1% (resto: %N2%)" & :: Inizializza variabile stringa S1 contenente variabili numeriche concatenate
echo %S1% & :: Visualizza il contenuto della variabile S1

F) DOS – Scegliere quale operazione matematica fare
@echo off & :: Disattiva la visualizzazione di messaggi nell'output.
REM Calcoli
set /A In0=0, In1=0, In2=0 & :: Inizializza le variabili numeriche In0, In1 e In2.
:MENU
echo Cosa vuoi fare?
echo 0) Chiudere questo script & echo 1) Somma & echo 2) Sottrazione & echo 3) Moltiplicazione & echo 4) Divisione & :: Mostra alternative
set /P "In0=Digita la tua scelta: " & :: Acquisisce digitazione valore variabile In0
if %In0% EQU 0 (goto FINE)
if %In0% EQU 1 (set "S0=+" & set "S1=Primo Addendo" & set "S2=Secondo addendo" & set "S3=Somma" & goto VAI) & :: Inizializza le variabili stringa S0 S1 S2 ed S3
if %In0% EQU 2 (set "S0=-" & set "S1=Minuendo" & set "S2=Sottraendo" & set "S3=Differenza" & goto VAI) & :: Inizializza le variabili stringa S0 S1 S2 ed S3
if %In0% EQU 3 (set "S0=*" & set "S1=Moltiplicando" & set "S2=Moltiplicatore" & set "S3=Prodotto" & goto VAI) & :: Inizializza le variabili stringa S0 S1 S2 ed S3
if %In0% EQU 4 (set "S0=/" & set "S1=Dividendo" & set "S2=Divisore" & set "S3=Quoziente" & goto VAI) & :: Inizializza le variabili stringa S0 S1 S2 ed S3
echo Opzione non consentita. & echo. & goto MENU
:VAI
set /P In1=Digita %S1%: & :: Inizializza la variabile In1 come variabile numerica contenente l'input da tastiera
set /P In2=Digita %S2%: & :: Inizializza la variabile In2 come variabile numerica contenente l'input da tastiera
set "S0=%In1%%S0%%In2%" & :: Ridefinisce variabile S0
SET /A N1=%S0% & :: Inizializza la variabile N1 come variabile numerica contenente In1+In2
echo %S3% = %N1%
set "S1=(%S0%)=%N1%" & :: Inizializza variabile stringa S1 contenente variabili numeriche concatenate
echo %S1% & echo.
goto MENU
:FINE

G) Informazioni utili presenti su blog altrui
https://learntutorials.net/it/batch-file/topic/3528/variabili-nei-file-batch