Script batch - Variabili

Esistono due tipi di variabili nei file batch. Uno è per i parametri che possono essere passati quando viene chiamato il file batch e l'altro viene eseguito tramite il comando set.

Argomenti della riga di comando

Gli script batch supportano il concetto di argomenti della riga di comando in cui gli argomenti possono essere passati al file batch quando vengono richiamati. Gli argomenti possono essere chiamati dai file batch tramite le variabili% 1,% 2,% 3 e così via.

L'esempio seguente mostra un file batch che accetta 3 argomenti della riga di comando e li visualizza nella schermata della riga di comando.

@echo off 
echo %1 
echo %2 
echo %3

Se lo script batch sopra è memorizzato in un file chiamato test.bat e dovremmo eseguire il batch come

Test.bat 1 2 3

Di seguito è riportato uno screenshot di come apparirà nel prompt dei comandi quando viene eseguito il file batch.

Il comando precedente produce il seguente output.

1 
2 
3

Se dovessimo eseguire il batch come

Example 1 2 3 4

L'output rimarrebbe comunque lo stesso di sopra. Tuttavia, il quarto parametro verrebbe ignorato.

Imposta comando

L'altro modo in cui le variabili possono essere inizializzate è tramite il comando "set". Di seguito è riportata la sintassi del comando set.

Sintassi

set /A variable-name=value

dove,

  • variable-name è il nome della variabile che vuoi impostare.

  • value è il valore che deve essere impostato rispetto alla variabile.

  • /A – Questa opzione viene utilizzata se il valore deve essere di natura numerica.

L'esempio seguente mostra un modo semplice per utilizzare il comando set.

Esempio

@echo off 
set message=Hello World 
echo %message%
  • Nello snippet di codice precedente, una variabile chiamata messaggio è definita e impostata con il valore "Hello World".

  • Per visualizzare il valore della variabile, notare che la variabile deve essere racchiusa nel segno%.

Produzione

Il comando precedente produce il seguente output.

Hello World

Lavorare con valori numerici

Nello script batch, è anche possibile definire una variabile per contenere un valore numerico. Questa operazione può essere eseguita utilizzando l'opzione / A.

Il codice seguente mostra un modo semplice in cui è possibile impostare valori numerici con l'opzione / A.

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c%
  • Per prima cosa impostiamo il valore di 2 variabili, aeb su 5 e 10 rispettivamente.

  • Stiamo aggiungendo quei valori e memorizzandoli nella variabile c.

  • Infine, stiamo visualizzando il valore della variabile c.

L'output del programma di cui sopra sarebbe 15.

Tutti gli operatori aritmetici funzionano in file batch. Il seguente esempio mostra che gli operatori aritmetici possono essere utilizzati nei file batch.

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c% 
SET /A c = %a% - %b% 
echo %c% 
SET /A c = %b% / %a% 
echo %c% 
SET /A c = %b% * %a% 
echo %c%

Il comando precedente produce il seguente output.

15 
-5 
2 
50

Variabili locali e globali

In qualsiasi linguaggio di programmazione, esiste un'opzione per contrassegnare le variabili come aventi una sorta di ambito, ovvero la sezione di codice in cui è possibile accedervi. Normalmente, è possibile accedere a variabili con ambito globale ovunque da un programma, mentre le variabili con ambito locale hanno un limite definito in cui è possibile accedervi.

Lo scripting DOS ha anche una definizione per le variabili con scope locale e globale. Per impostazione predefinita, le variabili sono globali per l'intera sessione del prompt dei comandi. Chiama il comando SETLOCAL per rendere le variabili locali all'ambito del tuo script. Dopo aver chiamato SETLOCAL, qualsiasi assegnazione di variabile viene ripristinata chiamando ENDLOCAL, chiamando EXIT o quando l'esecuzione raggiunge la fine del file (EOF) nello script. L'esempio seguente mostra la differenza quando le variabili locali e globali sono impostate nello script.

Esempio

@echo off 
set globalvar = 5
SETLOCAL
set var = 13145
set /A var = %var% + 5
echo %var%
echo %globalvar%
ENDLOCAL

Poche cose fondamentali da notare sul programma di cui sopra.

  • La 'globalvar' è definita con un ambito globale ed è disponibile in tutto lo script.

  • La variabile "var" è definita in un ambito locale perché è racchiusa tra un blocco "SETLOCAL" e "ENDLOCAL". Pertanto, questa variabile verrà eliminata non appena verrà eseguita l'istruzione "ENDLOCAL".

Produzione

Il comando precedente produce il seguente output.

13150
5

Noterai che il comando echo% var% non produrrà nulla perché dopo l'istruzione ENDLOCAL, la variabile 'var' non esisterà più.

Lavorare con le variabili d'ambiente

Se si dispone di variabili da utilizzare nei file batch, è sempre preferibile utilizzare variabili di ambiente. Una volta definita la variabile d'ambiente, è possibile accedervi tramite il segno%. Il seguente esempio mostra come vedere JAVA_HOME definito su un sistema. La variabile JAVA_HOME è un componente chiave normalmente utilizzato da un'ampia varietà di applicazioni.

@echo off 
echo %JAVA_HOME%

L'output mostrerebbe la directory JAVA_HOME che dipenderà da sistema a sistema. Di seguito è riportato un esempio di output.

C:\Atlassian\Bitbucket\4.0.1\jre