首页 > 解决方案 > 为什么批处理 %variable% 中传递的值未正确应用?

问题描述

[原标题:为什么批处理 %variable% 中的小写值返回为大写?]

健康)状况

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

SET myVar="something.lowercase"

但是稍后在脚本中当您这样引用该变量时:

%myVar%

该值的出现SOMETHING.LOWERCASE导致特定命令无法正常工作。(请参阅解决方案: 问题是命令中的虚假问题",大写是报告“失败”的方式

关心

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

语境

对于上下文,如果它很重要,它会以这种方式被调用:(事实证明这很重要,因为引入"导致检查失败并且混淆来自“找不到......”是大写的

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

我怀疑这是在此命令的上下文中以某种方式发生的,但不能确定也不知道为什么。如果这是偶然的情况,我该如何减轻它?(见决议

先感谢您。


解析度

感谢@Campo 的建议,通过删除已解决的问题来更改值,"并且脚本现在可以正常运行。谢谢你。

标签: windowsbatch-filevariables

解决方案


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

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

"IMAGENAME eq "something.lowercase""

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

""something.lowercase""

解决方法是使用正确的语法来设置变量:

Set "myVar=something.lowercase"

推荐阅读