risposta

13

Informazioni sui valori delle variabili: è possibile utilizzare la maggior parte dei caratteri come valori variabili, compreso lo spazio bianco. Se si utilizzano i caratteri speciali <,>, |, & o ^, è necessario precederli con il carattere di escape (^) o tra virgolette. Se si utilizzano le virgolette, vengono incluse come parte del valore poiché tutto ciò che segue il segno di uguale viene preso come valore.

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds_shelloverview.mspx?mfr=true

Controllare la sezione "Impostazione delle variabili di ambiente".

Informazioni sui nomi delle variabili: a mio parere, per la migliore compatibilità con ogni applicazione, è necessario limitarsi a lettere, numeri, trattino basso (_) e meno (-).

Sono abbastanza sicuro che tutti i caratteri validi POSIX per i file sono ok, ma non ho trovato alcuna prova di ciò.


Per quanto riguarda i nomi nomi delle variabili di cui abbiamo bisogno di accettare anche le parentesi dal %ProgramFiles(x86)% è un envar noto. Dai miei esperimenti sembra che oltre ai caratteri di lettere e cifre, questi caratteri sono validi _(){}[]$*+-\/"#',;[email protected]!? e questi caratteri non sono validi %<>^&|=:.

Non ho eseguito una ricerca esaustiva ma ho appena testato i caratteri non alfanumerici più comuni.

E solo per il gusto di farlo è possibile nominare un envar %_(){}[]$*+-\/"#',;[email protected]!?%:

C:\>set _(){}[]$*+-\/"#',;[email protected]!?=xyz 

C:\>echo %_(){}[]$*+-\/"#',;[email protected]!?% 
xyz 
0

Sembra <>^&| sono anche caratteri validi, purché siano sfuggiti correttamente:

C:\>set ^<^>^^^&^|=xyz 

C:\>echo %<>^&|% 
xyz