我似乎无法在批处理脚本中将环境变量分配给另一个变量。
例如,这将起作用:
set varA=C:\this\is\a\directory
我可以快乐地使用
find /I "MyString" %varA%
没有事件。但是,如果我尝试通过这种方式进行分配,
varA=%ENVVAR%\more\dirs
批处理仅停留在CMD窗口中,直到我停止它为止。
我仍在学习Windows令人讨厌的独特脚本的过程,因此我只能推测它在将变量分配给另一个变量方面不合时宜。
批量设置变量时需要注意的一件事是不要不必要地使用空格。(我没有在您的问题中看到此内容,但由于我在排查您的问题时发现自己正在这样做,所以想大声说出来。)例如:
set x=123
与...不同
set x = 123
前者将设置%x%
为123
,后者将设置%x %
为123
。(请注意,x
变量名中的空格,定义后的空格123
。)
要注意的另一件事是你不能只说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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句