Informacje o wartościach zmiennych: większość znaków można wykorzystać jako wartości zmiennych, w tym białe znaki. Jeśli używasz znaków specjalnych <,>, |, & lub ^, musisz poprzedzić je znakiem escape (^) lub cudzysłowem. Jeśli używasz cudzysłowów, są one uwzględniane jako część wartości, ponieważ wszystko za znakiem równości jest traktowane jako wartość.
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds_shelloverview.mspx?mfr=true
zobacz rozdział "Ustawianie zmiennych środowiskowych".
O nazwach zmiennych: moim zdaniem dla najlepszej kompatybilności z każdą aplikacją należy ograniczyć się do liter, cyfr, podkreślników (_) i minus (-).
Jestem całkiem pewien, że wszystkie prawidłowe znaki POSIX dla plików są w porządku, ale nie znalazłem żadnych dowodów na to.
Odnośnie nazwy zmiennych nazw musimy również przyjąć nawias od %ProgramFiles(x86)%
jest dobrze znany envar. Z moich eksperymentów wynika, że oprócz znaków liter i cyfr, te znaki są ważne _(){}[]$*+-\/"#',;[email protected]!?
i te znaki są nieprawidłowe %<>^&|=:
.
Nie przeprowadziłem wyczerpującego wyszukiwania, ale przetestowałem najczęściej występujące nie alfanumeryczne znaki.
I tak dla zabawy można wymienić takie envar %_(){}[]$*+-\/"#',;[email protected]!?%
:
C:\>set _(){}[]$*+-\/"#',;[email protected]!?=xyz
C:\>echo %_(){}[]$*+-\/"#',;[email protected]!?%
xyz