将 Windows 环境变量分配给批处理变量?

将 Windows 环境变量分配给批处理变量?

我似乎无法将批处理脚本中的环境变量分配给另一个环境变量。

例如,这将有效:

set varA=C:\this\is\a\directory

我可以愉快地使用

find /I "MyString" %varA%

毫无意外。但是,如果我尝试以这种方式分配它,

varA=%ENVVAR%\more\dirs

该批处理只会停留在 CMD 窗口中,直到我停止它。

我仍在学习 Windows令人讨厌的独特脚本,因此我只能推测它因为将一个变量分配给另一个变量而发脾气。

答案1

在批量设置变量时需要注意的一件事是不要不必要地使用空格。(我没有在您的问题中看到这一点,但我想指出这一点,因为我在解决问题时发现自己这样做了。)例如:

set x=123

不同于

set x = 123

前者将设置%x%123,而后者将设置%x %为。 (请注意变量名123后面的空格,以及定义前面的另一个空格。)x123

需要注意的另一件事是,您不能只说var=value。要设置环境变量,您必须使用SET命令。

因此,设置包含路径的环境变量并扩展该路径的环境变量的正确语法如下:

set x=C:\This\is\a\directory
set y=%x%\more\dirs

然后您可以使用该SET命令来验证这些变量的内容。

在此处输入图片描述

但是,如果您只是在学习 Windows 中的脚本语言,那么跳过批处理并直接进入 PowerShell 可能对您更有用。PowerShell 是 Windows Vista 及更高版本的标准配置,也适用于 XP。以下是在 PowerShell 中完成相同工作的方法。

$x='C:\This\is\a\directory'
$y="$x\more dirs"

$y(注意:设置时使用双引号,而使用单引号是有原因的$x。在这种情况下,我们可以使用任一引号进行设置,$x但由于我们需要扩展变量,因此设置时必须使用双引号$y。随着您学习该语言,您将学到更多有关这方面的知识。)

然后,为了验证变量,您可以直接调用它们。

在此处输入图片描述

在大多数情况下,PowerShell 对间距的敏感度也较低。

$x=123

是相同的

$x = 123

相关内容