niboron
Goto Top

PID der laufenden oder aufzurufenden Batch auslesen

Hallo,

ich möchte die Prozess ID der laufenden Batch (cmd.exe) auslesen. Nach einer längeren Suche habe ich folgenden indirekten Ansatz mit einer vorgeschaltenen Batch Datei gefunden.

check.bat
for /f "tokens=1-6" %%a in ('tasklist /V /FI "IMAGENAME eq cmd.exe" /NH') do echo %%b >> tasklistpre.txt  
START start.bat
for /f "tokens=1-6" %%a in ('tasklist /V /FI "IMAGENAME eq cmd.exe" /NH') do echo %%b >> tasklistpost.txt  

start.bat
pause

Mit einem Datei Vergleich wollte ich nun die neue PID auswerten, dummerweise bekomme ich beim tasklistpre 2 CMD PID und beim tasklistpost 3PID.

Beim Start Batch Datei läuft kein cmd Prozess

tasklistpre
4844 <- check.bat
4232 <- ?

tasklistpost
4844 <- check.bat
4352
4548
Im Taskmanager ist nur noch 4352 offen --> start.bat.

Nach dem Vergleich könnte ich natürlich einfach beide ID per taskkill Skript beenden, wäre aber nicht gerade schön.

Kennt jemand vieleicht einen besseren Ansatz oder wie man hiermit eindeutig die PID bekommt?
Unter Linux gibts ja den Platzhalter $$ der direkt die PID ausgibt.

Danke

Content-Key: 108562

Url: https://administrator.de/contentid/108562

Printed on: April 26, 2024 at 03:04 o'clock

Member: miniversum
miniversum Feb 10, 2009 at 13:33:29 (UTC)
Goto Top
Wen die 4844 die check bat ist dann ist die 4232 das Tasklist in der ersten For schleife.
Die 4352 und die 4548 gehören dan zum Tastlist in der zweiten For schleife und zur Start bat.
Wen du es direkt udn eindeutig wilslt könntest du es so machen das du der Start.bat einen eindeutigen Fenstertitel gibst (befehl "tile").
Mit Tasklist /V bekosmt du ja zu jedem tast den Fenstertitel in der letzten Spalte angegeben. Mit Findstr kanns tud dann diesen Vordefinierten Fenstertitel suchen udn die zugehörige ID finden.
Member: Niboron
Niboron Feb 10, 2009 at 14:30:48 (UTC)
Goto Top
perfekt mit dem Parameter Titel kann ich sehr gut arbeiten.
Damit wird die PID eindeutig
Danke


TITLE BATCH
for /f "tokens=1-6" %%a in ('tasklist /V /FI "WINDOWTITLE eq BATCH" /NH') do set BPID=%%b  
TITLE BATCH%BPID%