Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 为什么批处理%变量%中传递的值应用不正确?_Windows_Batch File_Variables - Fatal编程技术网

Windows 为什么批处理%变量%中传递的值应用不正确?

Windows 为什么批处理%变量%中传递的值应用不正确?,windows,batch-file,variables,Windows,Batch File,Variables,[原始标题:为什么批处理%变量%中的小写值以大写形式返回?] 条件 我有一个批处理文件,其中变量的值声明如下: 设置myVar=something.lowercase 但稍后在脚本中引用该变量时: %myVar% 值以SOMETHING.LOWERCASE形式输入,这导致特定命令无法正常工作。请参阅解决方案:该问题是命令中的一个伪问题,大写字母是报告故障的方式 涉及 为什么以及在什么情况下会发生这种情况?没有意义,因为该值没有被更改,而是报告故障的方式,故障是由于在传递的值中引入了错误。请参阅解

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

条件 我有一个批处理文件,其中变量的值声明如下:

设置myVar=something.lowercase

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

%myVar%

值以SOMETHING.LOWERCASE形式输入,这导致特定命令无法正常工作。请参阅解决方案:该问题是命令中的一个伪问题,大写字母是报告故障的方式

涉及 为什么以及在什么情况下会发生这种情况?没有意义,因为该值没有被更改,而是报告故障的方式,故障是由于在传递的值中引入了错误。请参阅解决方案

上下文 在上下文中,如果它很重要,那么它是这样被调用的:事实证明它很重要,因为引入的是导致检查失败的原因,而混乱来自于找不到。。。大写

任务列表/FI IMAGENAME eq%myVar%2>NUL |查找/I/N%myVar%>NUL

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

先谢谢你

决议
多亏了@Campo,通过删除脚本来更改值解决了问题,脚本现在可以正常运行。谢谢。

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

由于您已包含任务列表筛选器要查找的双引号:

IMAGENAME eq something.lowercase …并且您的“查找”命令正在尝试匹配:

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

设置myVar=something.lowercase
如果你能回答这个问题,在什么情况下会发生这种情况?最好是用一个MCVE最小的,完整的可验证的例子,我相信有人会回答这个问题为什么?我将假设图像名称是大写的。这与您正在使用的命令无关,因为您告诉它使用FIND命令忽略大小写。甚至带有TASKLIST命令的imagename选项也不关心大小写。所以我不明白你的问题是什么。您选择共享的代码工作得非常好。如果您设置了myVar=something.lowercase,那么除非您稍后设置myVar,否则它无法更改。Find的输出来自TaskList命令,它不是变量%myVar%,只是一个字符串。您的问题可能是因为在变量值中不必要地包含双引号,应该是,设置myVar=something.lowercase。由于您已包含双引号,任务列表筛选器正在查找IMAGENAME eq something.lowercase,而您的Find命令正在尝试匹配something.lowercase。再次说明:您的变量没有更改,它保持小写。它是任务列表的输出,它是大写的,并由Find/i see Find/过滤?如果你不能100%确定,我做什么。简单示例:echo HELLO | find/ihello@GårÐåñ,它不会改变变量,你错了!如果要验证这一点,只需在代码中多次添加Set myVar。当你运行代码时,它将输出变量名和值,这将验证问题。我希望你能给出一个答案,这样我才能正确地接受,但与此同时,为了清楚起见,我已经链接了你的评论。再次感谢你。假象确实是问题所在,你明白了,再次感谢你。