批处理以获取正在运行的所有进程的位置

时间:2016-07-15 09:00:26

标签: windows batch-file process

我想建立一个批处理,它将查看进程,为运行它的每个进程获取位置并将其放入变量中 例如:有进程x1运行 poof magic %var1%有程序x1的位置... 但它应该为每个过程做到这一点.. 我所知道的是如何只为一个过程而不是所有过程做到这一点,我必须知道过程的名称:

   wmic process where "name='aa.exe'" get ExecutablePath >dumpxkss.tmp
   more +1 dumpxkss.tmp >dumpxkss1.tmp
   for /f "delims=" %%x in (dumpxkss.tmp) do set Build=%%x
   set build1=%Build:~0,-8%

但在这种情况下,如果有更多的aa.exe进程,它将无法工作..

所以我想为每个过程获取路径,无论名称如何...... 请帮忙??

2 个答案:

答案 0 :(得分:0)

非常明显:在你的for循环中,你只设置一个变量 - 然后再次设置它并为文本文件的每一行再次设置它。因此,set build1只能使用最后一个值,所有以前的值都会被覆盖。您只需要展开{​​{1}}循环:

for

另请阅读delayed expansion

您可以将代码缩短为:

setlocal enabledelayedexpansion
wmic process where "name='aa.exe'" get ExecutablePath >dumpxkss.tmp
more +1 dumpxkss.tmp >dumpxkss1.tmp
for /f "delims=" %%x in (dumpxkss.tmp) do (
  set Build=%%x
  set build1=!Build:~0,-8!
  echo !build1!
)

答案 1 :(得分:0)

试试这个批处理文件:

@echo off
set LogFile=Running_Process.txt
If Exist %LogFile% Del %LogFile%
WMIC /APPEND:%LogFile% PROCESS GET Caption,CommandLine>Nul
start "" %LogFile%