2016-07-15 16 views
1

Ich möchte einen Stapel erstellen, der über die Prozesse, für jeden Prozess, den es ausgeführt wird, um den Speicherort zu bekommen und in eine Variable wie ex: there ist Prozess x1 läuft poof magic% var1% hat den Speicherort des Programms x1 ... Aber es sollte es für jeden Prozess tun .. was ich weiß ist, wie es nur für einen Prozess nicht alle von ihnen und ich haben den Namen des Prozesses kennen:Batch, um den Speicherort für alle laufenden Prozesse zu erhalten

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% 

aber in diesem Fall, wenn es mehr aa.exe ist verarbeitet es t Arbeit ..

gewann

so möchte ich den Weg für jeden Prozess bekommen, egal den Namen ... bitte helfen ??

+0

Meinten Sie, dass Sie alle Prozesse, die auf Ihrem Computer laufen, mit ihrem Pfad und t erhalten möchten Erbe Befehlszeile? – Hackoo

+0

ja das ist, was ich meinte – wkup

+0

Überprüfen Sie meine Antwort! – Hackoo

Antwort

0

ganz offensichtlich: In Ihrer for Schleife setzen Sie nur eine Variable - und setzen Sie sie erneut und setzen Sie sie erneut für jede Zeile der Textdatei. So kann Ihre set build1 nur mit dem letzten Wert arbeiten, alle vorherigen Werte wurden überschrieben. Sie müssen nur Ihre for Schleife erweitern:

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! 
) 

auch über delayed expansion

Sie lesen können Ihren Code verkürzen:

setlocal enabledelayedexpansion 
for /f "skip=1 tokens=*" %%x in ('wmic process where "name='aa.exe'" get ExecutablePath') do (
    set Build=%%x 
    echo !Build:~0,-8! 
) 
+0

nononono, Sie sehen, dass das Problem nicht gelöst hat .. Ich möchte diesen Befehl für jeden vorhandenen Prozess nicht nur für aa.exe ausführen – wkup

+0

dann löschen Sie einfach 'wo 'name =' aa.exe '" (obwohl ich' Ich bin mir nicht sicher, was '% Build: ~ 0, -8%' bedeuten soll ...) – Stephan

+0

ja, wenn ich entferne, wo "name = 'aa.exe'" und es als Administrator laufen lassen, funktioniert es ganz gut. Danke vielmals !!! – wkup

0

einen Versuch für diese Batch-Datei geben:

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

gut danke für die Arbeit, aber ich will sie nicht protokollieren .. Ich möchte jeden Ort von jedem laufenden Prozess in einer Variablen zu bekommen – wkup

Verwandte Themen