奇怪的批处理程序错误:无效的参数/选项:- 'eq'。

4

我有一行BAT代码写成了这样:

tasklist /FI "IMAGENAME eq WerFault.exe"|find /C "WerFault.exe" > temp.txt

一切进展都很顺利,但突然出现了这个错误信息:

error :Invalid argument/option: - 'eq'

这段代码在出现错误信息前后都没有更改过,我无法确定问题所在。


2
如果在“tasklist”命令调用中没有引号,则会收到相同的结果。看起来与命令的调用方式有关。请提供更多代码。 - npocmaka
@npocmaka,你需要在/FI过滤器规范周围加上双引号(至少对于Win7 x64)。@Mofi,这不可能是一个PATH问题,因为错误消息是由tasklist命令产生的。 - aschipfl
它在另一台“已知良好”的计算机上是否按预期工作?将您的代码直接复制并粘贴到控制台中,以及批处理文件中,对我来说完美地按预期工作。也许是实际的任务列表和查找可执行文件或其他某些东西在文件系统中出了问题? - Alex Hall
1个回答

6
您或者从搜索引擎进入本网站的用户,可能会遇到由文本编码混乱以及cmd.exe的挑战性破坏行为所导致的恶作剧,还有像这样的网站

他们的做法:

  1. 省略一个引号
  2. Unicode字符201c替换另一个引号

可能发生的情况:

  • 用户复制并粘贴该行,然后出现错误
  • 用户发现缺少一个引号,于是加上了
  • 现在它看起来和另一个引号完全一样了,所以无法看出发生了什么。
  • 不仅如此,将其复制粘回去,例如到Stackoverflow,会被替换为一个标准的、无指向性的双引号! 换句话说,即使将其从窗口中复制出来进行分析,它也与正确的符号无法区分!
  • 即使在cmd中进行复制粘贴(这方面常规快捷键不起作用),上述内容仍然成立,但通过向上键将一行带回来则不成立

我从中再次学到的教训:

当涉及到Unicode时,请勿相信您所看到的内容。

此外,cmd.exe通常并不是很安全或健康。如果有疑问,请手动重新输入命令。

这可能不是本处问题的原因,但如果其他人因同样的原因访问此处,也许这个答案可以为他们节省几分钟时间。


很好;这个命令对我来说复制得很好,但我能理解其他人可能会遇到这种情况。 - CoveGeek
1
5年前我提交了这个问题,不久之后我就退出了IT行业。虽然当时只是一个普普通通的程序员,但我却很怀念那些美好或者不太好的日子。谢谢! - world peace

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接