2

我需要从 Windows 批处理控制台知道 java 进程 PID。

@echo off
set p=%CD%
FOR /F "tokens=1" %%A IN ('"%JAVA_HOME%/bin/jps.exe -v"\|find  "%p%"') DO SET str=%%A
echo str = "%str%"

Java 进程唯一标识符是它执行的路径。脚本执行jps,返回所有java进程信息,例如

9376 Jps -Denv.class.path=D:\tools\timesten\lib\ttjdbc6.jar; -Dapplication.home=C:\Program Files\Java\jdk1.6.0_24 -Xms8m
3856  -Dexe4j.semaphoreName=c:_program files (x86)_jetbrains_intellij idea community edition 12.0.1_bin_idea.exe -Dexe4j.moduleName=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 12....etc

批次说:| 在这个时候是出乎意料的。

你能说一下,如何正确提取PID。

4

3 回答 3

1

您必须像这样^|FOR语句中转义管道,否则它会尝试将FOR语句的前半部分通过管道传输到第二部分。

这也是我找到PID的方式。

for /f "tokens=2" %%a in ('tasklist ^| find "jps.exe") do set javapid=%%a

于 2012-12-26T21:22:49.143 回答
0

您可以使用命令“tasklist”来显示 PID。

于 2012-12-25T10:06:40.857 回答
0

正确的脚本

   "%JAVA_HOME%/bin/jps.exe" -v>temp.txt
   for /f "tokens=1" %%f in ('find "%CD%" "temp.txt"') do set str=%%f
   echo str=%str%
于 2016-06-27T14:16:59.857 回答