我有这个 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