004 DOS – Manipolazione testi: variabili e stringhe

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

004 DOS – Manipolazione testi: variabili e stringhe

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 stringa
Nel DOS, le “variabili stringa” possono possono contenere sia numeri, sia lettere, sia simboli (compresi apici e spazi), sia comandi. L’inizializzazione di variabili stringa prevede che, prima di essere richiamata, ogni singola variabile stringa debba essere scritta preceduta dal comando SET, seguita dal simbolo di uguaglianza = e, infine, il valore della variabile; per esempio:
SET S1=10& :: Inizializza la variabile S1 come una variabile stringa contenente [10] (senza parentesi quadre)
SET S2= 7 & :: Inizializza la variabile S2 come una variabile stringa contenente [ 7 ] (senza parentesi quadre)
SET S3= 1,2& :: Inizializza la variabile S3 come una variabile stringa contenente [ 1,2] (senza parentesi quadre)
SET S4=3.4 & :: Inizializza la variabile S4 come una variabile stringa contenente [3.4 ] (senza parentesi quadre)
SET S5 =8& :: La presenza di spazi fra il nome della variabile ed il simbolo = rende il comando inesistente
SET S6="9" & :: Inizializza la variabile S6 come una variabile stringa contenente ["9" ] (senza parentesi quadre)
SET "S7=8" & :: Inizializza la variabile S7 come una variabile stringa contenente [8] (senza parentesi quadre)

B) DOS – Visualizzare il contenuto di una variabile
Per visualizzare una variabile occorre impartire il comando ECHO seguito da uno spazio più il simbolo % più il nome della variabile più un ultimo simbolo %. Per esempio: se vogliamo assegnare un contenuto alla variabile stringa S1, un contenuto alla variabile numerica N1 e poi vedere il contenuto delle 2 variabili, i comandi da impartire sono:
SET /A N1=-532 & SET "S1=Stringa S1" & SET "S2=DIR" & :: Inizializza la variabile numerica N1 e le variabili stringa S1 S2
ECHO %n1% & :: Visualizza il contenuto della variabile numerica N1 contenente [-532] (senza parentesi quadre)
ECHO %s1% & :: Visualizza il contenuto della variabile stringa S1 contenente [Stringa S1] (senza parentesi quadre)
ECHO %S2% & :: Visualizza il contenuto della variabile stringa S2 contenente il comando [DIR] (senza parentesi quadre)
ECHO %s1% %N1% %s2% & :: Visualizza il contenuto delle variabili S1, N1, ed S2, separate da uno spazio
%s2% & :: Esegue il comando [DIR] (senza parentesi quadre) contenuto della variabile S2, separate da uno spazio

C) DOS – Inizializzare variabili in ingresso
Per fare in modo che lo script acquisisca da tastiera il contenuto di una variabile, occorre prima inizializzarla per tipologia (numerica o stringa), poi inizializzarla come “in ingresso”. Per inizializzare una variabile in ingresso, occorre usare un’istruzione tipo:
[SET /P] [Var]=[Richiesta di inserire dato] (senza parentesi quadre).
Segue uno script DOS che, fra le altre cose, inizializza in ingresso 2 variabili numeriche.
@echo off & :: Disattiva la visualizzazione di messaggi nell'output.
set Is1=& :: Inizializza la variabile Is1 come variabile stringa vuota
set /A In1=0 & :: Inizializza la variabile In1 come variabile numerica
SET /P Is1=Digita una frase: & :: Inizializza la variabile Is1 come variabile stringa contenente l'input da tastiera
SET /P In1=Digita un numero: & :: Inizializza la variabile In1 come variabile numerica contenente l'input da tastiera
echo Hai digitato la frase: "%Is1%" ed il numero %In1% & :: Visualizza il contenuto delle variabili Is1 ed In1

D) DOS – Concatenare variabili alfanumeriche
Per concatenare variabili e/o testo all’interno di una variabile, occorre usare un’istruzione tipo:
“[VarConcatenata]=[%Var1%][%Var2%]testo[%Var1%][%Var3%]” (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, concatena 4 variabili ed un carattere di punteggiatura in un’unica variabile di testo.
@echo off & :: Disattiva la visualizzazione di messaggi nell'output.
set "S1=Primo Numero:" & SET "S2=Secondo Numero:" & set /A N1=22 & set /A N2=9 & :: Inizializza variabili S1 S2 N1 N2
SET "S3=%S1% %N1%; %S2% %N2%" & :: Inizializza variabile stringa S3 contenente variabili stringa e variabili numeriche concatenate
echo %S3% & :: Visualizza il contenuto della variabile S3

E) DOS – manipolare le variabili alfanumeriche
Seguono alcuni script contenenti esempi di manipolazione delle stringhe di testo.
Per poterli usare, dopo averli salvati in un file di testo avente estensione .bat salvato nella cartella di lavoro,
occorre lanciarli impartendo nome ed estensione da un terminale aperto nella cartella di lavoro.

@echo off
rem Estrazione di parte del contenuto di una variabile alfanumerica (stringa)
set "S1=123456789#987654321" & :: Inizializza variabile stringa S1 e ne imposta il contenuto.
echo %S1% Visualizza contenuto della variabile stringa S1
echo %S1:~7% Estrae il contenuto di S1 tranne i primi 7 caratteri, e lo visualizza
echo %S1:~7,3% Estrae il contenuto di S1 tranne i primi 7 caratteri, e ne visualizza i primi 3 caratteri
echo %S1:~7,-3% Estrae il contenuto di S1 tranne i primi 7 caratteri, e lo visualizza, tranne gli ultimi 3 caratteri
echo %S1:~0,7% Estrae e visualizza i primi 7 caratteri di S1
echo %S1:~0,-7% Estrae e visualizza il contenuto di S1, tranne i primi 7 caratteri
echo %S1:~-7% Estrae gli ultimi 7 caratteri di S1, e li visualizza
echo %S1:~-7,3% Estrae gli ultimi 7 caratteri di S1, e ne visualizza i primi 3
echo %S1:~-7,-3% Estrae gli ultimi 7 caratteri di S1, li visualizza tutti tranne gli ultimi 3
REM
set "S2=" & :: Inizializza variabile stringa S2 priva di contenuto.
set "S2=%S1:~7%" & echo %S2% Estrae il contenuto di S1 tranne i primi 7 caratteri, e lo visualizza
set "S2=%S1:~7,3%" & echo %S2% Estrae il contenuto di S1 tranne i primi 7 caratteri, e ne visualizza i primi 3 caratteri
set "S2=%S1:~7,-3%" & echo %S2% Estrae il contenuto di S1 tranne i primi 7 caratteri, e lo visualizza, tranne gli ultimi 3 caratteri
set "S2=%S1:~0,7%" & echo %S2% Estrae e visualizza i primi 7 caratteri di S1
set "S2=%S1:~0,-7%" & echo %S2% Estrae e visualizza il contenuto di S1, tranne i primi 7 caratteri
set "S2=%S1:~-7%" & echo %S2% Estrae gli ultimi 7 caratteri di S1, e li visualizza
set "S2=%S1:~-7,3%" & echo %S2% Estrae gli ultimi 7 caratteri di S1, e ne visualizza i primi 3
set "S2=%S1:~-7,-3%" & echo %S2% Estrae gli ultimi 7 caratteri di S1, li visualizza tutti tranne gli ultimi 3

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