4

我有一行这样写的 BAT 代码:

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

它持续了好几天,但突然我收到以下错误消息:

error :Invalid argument/option: - 'eq'

此错误消息之前和之后的代码都没有更改,我无法弄清楚是什么问题。

4

1 回答 1

5

您,或者从搜索中来到这里的人,可能已经被文本编码的疯狂和 cmd.exe 的边界破坏行为以及诸如此类的网站所控制。

他们做了什么:

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

可能发生了什么:

  • 用户复制粘贴该行并收到错误
  • 用户注意到缺少的引号并添加它
  • 它现在看起来与另一个引号相同,因此无法查看发生了什么。
  • 它不仅看起来相同,而且将其复制粘贴回来,例如 Stackoverflow,将其替换为标准的无向双引号!换句话说,即使将其复制回窗口进行分析,也无法将其与正确的符号区分开来!
  • 即使对于 cmd 中的复制粘贴(方便地不适用于标准热键),上述情况也是如此,但不适用于通过向上键恢复一行。

我再次从中学到了:

当涉及 Unicode 时,不要相信你所看到的。

此外,cmd.exe 通常不是很安全或理智。如有疑问,请手动重新键入命令。

这可能不是这里的原因,但如果其他人出于与我相同的原因来到这里,也许这个答案会为他们节省几分钟。

于 2016-02-04T12:20:06.890 回答