Odpowiedz

13

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 
0

Wydaje się <>^&| są również ważne postacie, tak długo jak są one właściwie uciekł:

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

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