为什么批量%变量%中的传递值未正确应用?

时间:2018-04-24 19:53:34

标签: windows batch-file variables

[原标题:为什么批量%变量%中的小写值以大写形式返回?]

条件

我有一个批处理文件,其中为变量声明了值:

SET myVar="something.lowercase"

但稍后在脚本中引用该变量时:

%myVar%

该值以SOMETHING.LOWERCASE 的形式出现,导致特定命令无法正常工作。 (查看解决方案: 该问题在命令中是一个虚假的",而大写字母是报告"失败"的方式

为什么以及在什么情况下会发生这种情况? 模拟 因为值没有被更改,而是报告失败的方式和失败是由于在传递的值中引入了" 请参阅解决方案

上下文

对于上下文,,如果它重要,它就会以这种方式调用:( 因为引入的"导致检查失败而变得很重要混乱来自"找不到......"是大写的

TASKLIST /FI "IMAGENAME eq %myVar%" 2>NUL | FIND /I /N "%myVar%">NUL

我怀疑这是在这个命令的上下文中发生的,但是不能确定并且不知道为什么。如果这是偶然的情况,我该如何减轻它? (查看解决方案

提前谢谢。

分辨率

感谢@ Campo' suggestion,通过删除"来更改值,解决了问题,并且脚本现在正常运行。谢谢。

1 个答案:

答案 0 :(得分:1)

您的问题是因为您不必要地在变量值中包含双引号。

因为您已包含TaskList过滤器正在寻找的双引号:

"IMAGENAME eq "something.lowercase""

...并且您的Find命令正在尝试匹配:

""something.lowercase""

修复方法是使用正确的语法来设置变量:

Set "myVar=something.lowercase"