【问题标题】:What are valid characters for Windows environment variable names and values?Windows 环境变量名称和值的有效字符是什么?
【发布时间】:2013-12-17 13:39:05
【问题描述】:

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

名称允许使用哪些字符?
values 允许使用哪些字符?

【问题讨论】:

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


    【解决方案1】:

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

    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
    

    【讨论】:

    • 环境名称中的空格是有效的?,表情符号也是如此?
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      似乎唯一被禁止的字符是等号(“=”)-来自https://docs.microsoft.com/en-us/windows/win32/procthread/environment-variables

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-19
        • 2022-09-28
        • 2013-05-28
        • 2015-01-10
        相关资源
        最近更新 更多