Sulla Programmazione

Quattro chiacchere sulla programmazione e sulle bit-tecnologie con Fabrizio Cipriani

DOS Batch: impostare una variabile con un valore letto da un file

Personalmente ritengo che sia difficile che i linguaggi di programmazione batch di Windows possano mai raggiungere la flessibilità e la potenza dei linguaggi shell di Linux (vedi BASH)

Tuttavia anche il prompt dei comandi di Windows riserva delle sorprese, anche se ci limitiamo agli intramontabili comandi batch, senza andare a scomodare i vari Powershell, JScript e VBScript.

Mettiamo ad esempio di voler scrivere un gruppo di file batch, ognuno dei quali condivide con gli altri delle variabili di configurazione.

Come faccio ad usare le stesse variabili di configurazione in differenti file .bat?

La prima possibilità è quella di copiare brutalmente le variabili in ognuno dei file. La scartiamo subito.

La seconda è quella di impostare le variabili di configurazione in un file "master" e richiamare gli altri usando "CALL". In questo modo sarebbe possibile ereditare le variabili impostate nel master.

Così però diventa complicato lanciare indipendentemente i singoli file, se non aggiungendo ulteriore complessità al master.

Rimane l'ultima ipotesi: leggere i valori di configurazione da file. 

"Da file?? Con un comando batch??"

Donne e uomini di poca fede. Ecco come la cosa è possibile.

A partire da Windows 2000, il comando SET può essere invocato con il parametro /P.

C:\>SET /P variabile=[PromptString]

In quel caso, SET si aspetta un input dell'utente. [PromptString] sarà il testo proposto all'utente, il quale in risposta digiterà un valore che sarà inserito nella variabile specificata.

Se aggiungo al segno uguale "=" il segno di ridirezione "<" e poi il nome di un file, l'input arriverà dal file invece che dalla tastiera. 

Ad esempio, mettiamo di voler caricare nella variabile root il valore "D:\\INSTALLAZIONE"

Creo il file di configurazione che contiene il mio valore e lo chiamo root.config:

C:\>ECHO D:\INSTALLAZIONE > root.config

Posso così caricare il mio valore di configurazione dal file root.config nella mia variabile root:

C:\>SET /P root=<root.config

Come verifica finale, vediamo il contenuto della variabile root:

C:\>ECHO %root%
D:\INSTALLAZIONE

C:\> 

Attenzione, se il file root.config contiene più di una linea, solo la prima verrà assegnata alla nostra variabile. Questo perchè l'accapo viene interpretato allo stesso modo di un invio da tastiera.

Scatenate la potenza dei batch del prompt dei comandi windows!

Comments