什么是Windows环境variables名称和值的有效字符?

经过一番研究,我发现名称的长度限制是255,值是32767个字符。

但是哪些字符是允许的名字
哪些字符允许使用

Solutions Collecting From Web of "什么是Windows环境variables名称和值的有效字符?"

关于变量值:可以使用大多数字符作为变量值,包括空格。 如果使用特殊字符<,>,|,&,或^,则必须在它们前面加上转义字符(^)或引号。 如果使用引号,则将它们作为值的一部分包含在内,因为等号后面的所有内容都被视为值。

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

选中“设置环境变量”一节。

关于变量名称:在我看来,为了与每个应用程序最好的兼容性,你应该限制自己的字母,数字,下划线(_)和减号( – )。

我很确定,所有POSIX有效的文件字符都可以,但是我没有找到任何证据。


关于变量名称,我们还需要接受括号,因为%ProgramFiles(x86)%是一个众所周知的envar。 从我的实验看来,除了字母和数字字符之外,这些字符是有效的_(){}[]$*+-\/"#',;.@!?这些字符无效%<>^&|=:

我没有做详尽的搜索,只是测试了最常见的非字母数字字符。

只是为了它的乐趣,你可以命名为envar %_(){}[]$*+-\/"#',;.@!?% /“#',。。@!?%:

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

看起来像<>^&| 也是有效的字符,只要正确逃脱:

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