从批处理文件运行时,wmic 输出为空,但从 cmd 运行时包含信息

从批处理文件运行时,wmic 输出为空,但从 cmd 运行时包含信息

我有这个 wmic 命令,它可以找出我的进程的 PID,并且可以从 cmd 中正常工作,但是在 bat 文件中执行时拒绝产生输出:

wmic /output:process.pid process where (Name like '%java%' and commandLine like '%part-of-the-path%') get ProcessId

当我从 cmd 运行它时,它会生成一个包含

ProcessId
19352

信息后面是两行空白行。当我从批处理文件运行它时,它只生成一个包含两行空白行的文件。

我尝试了和/output:filename,结果都一样。> filename| more > filename

这是为什么?如何使命令从批处理中产生输出?

答案1

与大多数编程语言一样,批处理文件也有转义字符。%命令行中使用的符号是批处理文件中的转义字符,它赋予命令不同的含义。它实际上是在寻找一个名为的变量%java%

要解决此问题,请在批处理文件中使用%%而不是。要查看有关其他转义字符的更多详细信息和信息,请查看%这里

以下命令应该在批处理文件中运行。

wmic /output:process.pid process where (Name like '%%java%%' and commandLine like '%%part-of-the-path%%') get ProcessId

相关内容