经过一番研究后,我发现名称length limits为255,值为32767个字符。
但名称允许哪些字符? 值允许哪些字符?
答案 0 :(得分:21)
关于变量值:您可以将大多数字符用作变量值,包括空格。如果使用特殊字符<,>,|,&或^,则必须在它们前面加上转义字符(^)或引号。如果使用引号,则它们将作为值的一部分包含在内,因为等号后面的所有内容都将作为值。
检查“设置环境变量”部分。
关于变量名称:在我看来,为了与每个应用程序实现最佳兼容性,您应该将自己限制为字母,数字,下划线(_)和减号( - )。
我很确定文件的所有POSIX有效字符都可以,但我没有找到任何证据。
关于变量名称,我们还需要接受括号,因为%ProgramFiles(x86)%
是一个众所周知的envar。从我的实验中看来,除了字母和数字字符外,这些字符有效_(){}[]$*+-\/"#',;.@!?
且这些字符无效%<>^&|=:
。
我没有进行详尽的搜索,只是测试了最常见的非字母数字字符。
只是为了它的乐趣,你可以命名一个envar %_(){}[]$*+-\/"#',;.@!?%
:
C:\>set _(){}[]$*+-\/"#',;.@!?=xyz
C:\>echo %_(){}[]$*+-\/"#',;.@!?%
xyz
答案 1 :(得分:4)
似乎<>^&|
也是有效字符,只要它们被正确转义:
C:\>set ^<^>^^^&^|=xyz
C:\>echo %<>^&|%
xyz
答案 2 :(得分:3)
似乎唯一禁止使用的字符等于(“ =”)符号-https://msdn.microsoft.com/en-us/library/windows/desktop/ms682653(v=vs.85).aspx
环境变量的名称不能包含等号(=)。