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

joe*_*joe 16 windows invalid-characters environment-variables special-characters

经过一些研究,我发现名称的长度限制为255,值为32767个字符.

但是哪些字符可以用于名称
哪些字符允许

Ghi*_*igo 21

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

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
Run Code Online (Sandbox Code Playgroud)


use*_*683 6

似乎<>^&|也是有效的字符,只要它们被正确转义:

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

C:\>echo %<>^&|%
xyz
Run Code Online (Sandbox Code Playgroud)