C:\Documents and Settings\shutdown>set /?
Visualizza, imposta o rimuove le variabili d'ambiente di cmd.exe.
SET [variabile=[stringa]]
variabile Specifica il nome della variabile d'ambiente.
stringa Specifica una serie di caratteri da assegnare alla variabile.
Digitare SET senza parametri per visualizzare le variabili d'ambiente correnti.
Se le estensioni ai comandi sono abilitate SET cambia come segue:
il comando SET richiamato con un solo nome di variabile, senza segno di uguale o
valore
visualizzerà il valore di tutte le variabili il cui prefisso corrisponda al nom
e
dato al comando SET. Per esempio:
SET P
visualizzerà tutte le variabili che iniziano con la lettera "P"
Il comando SET imposterà ERRORLEVEL a 1 se il nome della variabile non viene tro
vato
nell'ambiente corrente.
Il comando SET non consente che il segno uguale faccia parte del nome di
una variabile.
Sono state aggiunte due nuove opzioni al comando SET:
SET /A espressione
SET /P variabile=[StringaPrompt]
L'opzione /A specifica che la stringa alla destra del segno uguale
è un'espressione numerica che viene calcolata. Il calcolo dell'espressione
è semplice e supporta le seguenti operazioni, in ordine di
importanza decrescente:
() - raggruppamento
! ~ - - operatori aritmetici
+ - - operatori aritmetici
<< >> - shift logico
& - bitwise e
^ - bitwise esclusivo o
| - bitwise o
= *= /= %= += -= - assegnazione
&= ^= |= <<= >>=
, - separatore espressione
Se si utilizzano operatori logici o di moduli, sarà necessario
racchiudere la stringa dell'espressione entro virgolette. Le stringhe non numer
iche
nell'espressione vengono considerate come nomi di variabili di ambiente i cui va
lori sono
convertiti in numeri prima che vengano utilizzati. Se un nome di variabile di a
mbiente
è specificato ma non definito nell'ambiente corrente, allora si utilizza
un valore di zero. Così è possibile eseguire operazioni aritmetiche con
valori di variabili di ambiente senza dover digitare tutti i segni % per ottener
e i rispettivi
valori. Se SET /A viene eseguito dalla riga di comando al di fuori di uno
script, verrà visualizzato il valore finale dell'espressione. L'operatore
dell'assegnazione richiede un nome di variabile di ambiente alla sinistra
dell'operatore di assegnazione. I valori numerici sono numeri decimali, a meno
che
non siano preceduti da 0x per numeri esadecimali e 0 per numeri ottali.
Così 0x12 è analogo a 18 analogo a 022. Ricordare che la notazione
ottale può generare confusione: 08 e 09 non sono numeri validi poiché 8 e
9 non sono cifre ottali valide.
L'opzione /P consente di impostare il valore di una variabile a una riga di inpu
t
immessa dall'utente. Visualizza la StringaPrompt specificata prima di leggere
la riga di input. La StringaPrompt può essere vuota.
La sostituzione delle variabili di ambiente è migliorata come segue:
%PATH:str1=str2%
espande la variabile di ambiente PATH, sostituendo ciascuna occorrenza
di "str1" nel risultato espanso con "str2". "str2" può essere la stringa
vuota per eliminare tutte le occorrenze di "str1" dall'output prodotto
dall'espansione. "str1" può iniziare con un asterisco, e in tal caso sarà corri
spondente
al punto di inizio dell'output dell'espansione fino alla prima
occorrenza della parte restante di str1.
Può anche specificare sottostringhe per un'espansione.
%PATH:~10,5%
espande la variabile di ambiente PATH, e quindi utilizza solo i 5
caratteri che cominciano all'undicesimo (offset 10) carattere del risultato
dell'espansione. Se la lunghezza non è specificata, per impostazione predefinit
a va al
resto del valore della variabile. Se uno dei numeri(offset o lunghezza) è
negativo, il numero utilizzato è il valore della lunghezza della variabile di
ambiente sommato all'offset o lunghezza specificati.
%PATH:~-10%
estrae gli ultimi 10 caratteri della variabile PATH.
%PATH:~0,-2%
estrae tutti tranne gli ultimi 2 caratteri della variabile PATH.
Infine, è stato aggiunto il supporto per l'espansione ritardata delle variabili
di ambiente. Il supporto è disabilitato per impostazione predefinita, ma è poss
ibile
abilitarlo o meno mediante l'opzione /V del comando CMD.EXE. Vedere CMD /?
L'espansione ritardata della variabile di ambiente è utile per ovviare alle
limitazioni dell'espansione corrente che si verificano quando viene letta
una riga di testo, non quando viene eseguita. L'esempio seguente
dimostra il problema con un'espansione immediata:
impostare VAR=prima
se "%VAR%" == "prima" (
impostare VAR=dopo
se "%VAR%" == "dopo" @echo In questo caso, ha funzionato
)
non mostrerebbe il messaggio poiché %VAR% nelle istruzioni BOTH IF statements
viene sostituito alla lettura della prima istruzione IF, poiché include logicame
nte
il corpo di IF, che è un'istruzione composta. Pertanto,
IF all'interno dell'istruzione composta mette a confronto "prima" con
"dopo" che non saranno mai uguali. Analogamente, l'esempio seguente
non funziona come dovrebbe:
set LIST=
for %i in (*) do set LIST=%LIST% %i
echo %LIST%
in quanto NON crea un elenco di file nella directory corrente,
ma invece imposta la variabile LIST all'ultimo file trovato.
Nuovamente, questo avviene perché %LIST% viene espanso solo una volta alla
lettura dell'istruzione FOR, e in quel momento la variabile LIST è vuota.
Quindi il loop FOR che in realtà si sta eseguendo è:
for %i in (*) do set LIST= %i
che mantiene l'impostazione di LIST all'ultimo file trovato.
L'espansione ritardata delle variabili di ambiente consente di utilizzare un car
attere
differente (punto esclamativo) perr espandere le variabili di ambiente al
momento dell'esecuzione. Se l'espansione ritardata delle variabili di ambiene è
abilitata, gli esempi appena
mostrati potrebbero essere riportati come segue per funzionare correttamente:
set VAR=prima
if "%VAR%" == "prima" (
set VAR=dopo
if "!VAR!" == "dopo" @echo In questo caso, ha funzionato
)
set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%
Se le estensioni ai comandi sono abilitate, sono presenti molte variabili di
ambiente dinamiche che è possibile espandere ma che non appaiono nell'elenco
delle variabili mostrate da SET. Questi valori sono
calcolati dinamicamente ad ogni espansione delle variabili.
Se l'utente definisce esplicitamente una variabile con uno di questi nomi,
questa definizione sovrascrive la definizione dinamica descritta di seguito:
%CD% - espande alla stringa di directory corrente.
%DATE% - espande alla data corrente utilizzando lo stesso formato del comando DA
TE.
%TIME% - espande all'ora corrente utilizzando lo stesso formato del comando TIME
.
%RANDOM% - espande a un numero decimale scelto a caso tra 0 e 32767.
%ERRORLEVEL% - espande al valore ERRORLEVEL corrente
%CMDEXTVERSION% - espande al numero di versione delle estensioni del processore
di comando corrente.
%CMDCMDLINE% - espande alla riga di comando iniziale che ha invocato il
processore di comando.