【问题标题】:How do you check if environment variables are defined in windows batch scripting [closed]如何检查 Windows 批处理脚本中是否定义了环境变量 [关闭]
【发布时间】:2017-09-06 01:09:48
【问题描述】:

我正在尝试创建一个批处理文件来检查环境变量是否已定义或未定义,并给出一个特定的输出语句。这就是我所拥有的,我似乎无法让程序告诉我任何参数都已定义。

if not defined "%MyVar%" (
    echo MyVar is NOT defined
)

if defined "%MyVar%" (
    echo MyVar IS defined 
)

【问题讨论】:

  • %MyVar%%1 有什么相关性?
  • @Compo MyVar 变量应该是一个“环境变量”,当您在 cmd.exe 中运行程序并键入文件名和参数时,%1 指的是参数。

标签: windows batch-file environment-variables


【解决方案1】:

我想你的意思是写:

if not defined MyVar (
  echo MyVar is NOT defined
)

if defined MyVar (
  echo MyVar IS defined 
)

这是因为如果将变量的 content 包含在 % 字符中,cmd.exe 将扩展对变量的引用。 (您想知道是否定义了变量 itself,而不是是否定义了具有该变量的 content 名称的变量。)

请注意,环境变量% 字符内的名称)不同于可替换参数%0%1 等)。

我建议切换到 Windows PowerShell,因为它具有内置的参数解析功能、变量范围、实际函数等等。

【讨论】:

  • 所以我把它改成了没有 % 符号的 MyVar。是不是一定要让程序查看特定路径才能查看环境变量?
  • 如果您希望 cmd.exe 评估变量,您必须将其括在% 字符中。
  • 那么If Not Defined %1 (Echo=%1 is not defined) Else Echo=%1 is defined 有什么问题呢?
  • %1 是可替换参数,不是环境变量。
猜你喜欢
  • 2021-03-15
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 2017-06-13
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多