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

时间:2013-12-17 13:39:05

标签: windows environment-variables special-characters invalid-characters

经过一番研究后,我发现名称length limits为255,值为32767个字符。

名称允许哪些字符? 允许哪些字符?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:3)

似乎唯一禁止使用的字符等于(“ =”)符号-https://msdn.microsoft.com/en-us/library/windows/desktop/ms682653(v=vs.85).aspx

  

环境变量的名称不能包含等号(=)。