如何将环境变量设置为某些命令的多个输出值中的特定值?

How to set env variable to the specific value out of multiple output values of some command?

我正在使用以下命令找出某些字符串的 pid,例如我的名字。

for /f "TOKENS=1" %a in ('wmic PROCESS where "commandline like '%myname%' and name ='java.exe'" get processid') do set myid=%a

这个命令returns我下面o/p。

set myid=ProcessId set myid=1928 set myid= 最后,它将空值设置为 myid。我如何设置进程 ID 为 1928?

for /f "TOKENS=* delims=" %a in ('wmic PROCESS where "commandline '%myname%' and  name ='java.exe'" get processid /format:value')  do (set "%a" >nul)
set proc

这样试试。

如果我将它放入 bat 文件,这对我有用:

@ECHO OFF
for /f "TOKENS=1 skip=1" %%a in ('wmic PROCESS where "commandline '%myname%' and  name ='java.exe'" get processid') do (
    SET PID=%%a
    GOTO BREAK
)
:BREAK
ECHO %PID%

重要数据存储在第二个输出中,因此只需跳过第一个并在第一次迭代后退出 FOR 循环。