我需要使用 cmd.exe 命令行(正在从 gyp 构建工具调用 cmd.exe)来确定是否定义了环境变量。我怎样才能做到这一点?我可以假设变量值不包含单引号或双引号,但不能假设启用了命令扩展。
我尝试了以下方法,它在 .bat 文件中效果很好,但在命令行上直接键入时失败:
IF "%UNDEFINED%" == "" (echo yes)
当该确切行在 .bat 文件中并执行时,我将yes
其视为输出。当我在命令行上键入它时,输出为空。我正在 Windows XP SP3 上对此进行测试,尽管我的同事在 Windows 7 上看到了相同的结果。这是http://support.microsoft.com/kb/121170和http://www.robvanderwoude.com/建议的方法battech_defined.php。我不想使用IF DEFINED UNDEFINED (echo yes)
,因为如果命令扩展被禁用,那将不起作用。
以下帖子中投票最多的答案让我相信这个问题与“CmdLineParser”与“BatchLineParser”中百分比扩展的处理方式不同有关,但仍然没有让我找到解决方案: 如何Windows 命令解释器 (CMD.EXE) 是否解析脚本?