我想建立一个批处理,它将查看进程,为运行它的每个进程获取位置并将其放入变量中 例如:有进程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进程,它将无法工作..
所以我想为每个过程获取路径,无论名称如何...... 请帮忙??
答案 0 :(得分:0)
非常明显:在你的for
循环中,你只设置一个变量 - 然后再次设置它并为文本文件的每一行再次设置它。因此,set build1
只能使用最后一个值,所有以前的值都会被覆盖。您只需要展开{{1}}循环:
for
您可以将代码缩短为:
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%