【发布时间】:2013-12-17 13:39:05
【问题描述】:
经过一番研究,我发现length limits 的名称是 255 个字符,值是 32767 个字符。
但名称允许使用哪些字符?
values 允许使用哪些字符?
【问题讨论】:
标签: windows environment-variables special-characters invalid-characters
经过一番研究,我发现length limits 的名称是 255 个字符,值是 32767 个字符。
但名称允许使用哪些字符?
values 允许使用哪些字符?
【问题讨论】:
标签: windows environment-variables special-characters invalid-characters
关于变量值:您可以使用大多数字符作为变量值,包括空格。如果使用特殊字符 、|、& 或 ^,则必须在它们前面加上转义字符 (^) 或引号。如果使用引号,它们将作为值的一部分包含在内,因为等号后面的所有内容都被视为值。
检查“设置环境变量”部分。
关于变量名:在我看来,为了与每个应用程序实现最佳兼容性,您应该限制自己使用字母、数字、下划线 (_) 和减号 (-)。
我很确定文件的所有 POSIX 有效字符都可以,但我没有找到任何证据。
关于变量名,我们还需要接受括号,因为%ProgramFiles(x86)% 是一个众所周知的 envar。从我的实验看来,除了字母和数字字符之外,这些字符是有效的_(){}[]$*+-\/"#',;.@!?,而这些字符是无效的%<>^&|=:。
我没有进行详尽的搜索,只是测试了最常见的非字母数字字符。
为了好玩,您可以命名一个 envar %_(){}[]$*+-\/"#',;.@!?%:
C:\>set _(){}[]$*+-\/"#',;.@!?=xyz
C:\>echo %_(){}[]$*+-\/"#',;.@!?%
xyz
【讨论】:
似乎<>^&| 也是有效字符,只要它们被正确转义:
C:\>set ^<^>^^^&^|=xyz
C:\>echo %<>^&|%
xyz
【讨论】:
似乎唯一被禁止的字符是等号(“=”)-来自https://docs.microsoft.com/en-us/windows/win32/procthread/environment-variables:
环境变量的名称不能包含等号 (=)。
【讨论】: