Windows Analog von $ 1 (PID des zuletzt gestarteten Prozesses)

1866
Dime

Wie erhält man die Windows-PID des zuletzt gestarteten Prozesses mit WScript.Shell oder ähnlichem?

Ich weiß, wie man einen Prozess startet und seine PID erhält:

Set oExec = WshShell.Exec( program ) Set pid = oExec.ProcessID 

Nun ist das Problem, dass das Programm ein anderer Stapel ist (oder VBScript sein könnte). Der Batch startet ein echtes Programm, welches ich gerne erhalten möchte.

Unter Linux (Shell-Skript) ist das sehr einfach. geradepid=$!

Aber was kann ich unter Windows machen?

3
Warum geben Sie die PID nicht einfach mit VBScript als Rückgabewert zurück (oder senden Sie sie einfach an stdout)? Breakthrough vor 13 Jahren 0
Vielen Dank. Ich denke, der Rückgabewert ist auf 256 begrenzt. Aber es scheint, als ob der einzige Weg (mit vertretbarem Aufwand) stdout im VBScript lesen kann. Ich denke, ich kann die 'oExec.StdOut'-Eigenschaft verwenden, habe es aber bisher noch nicht probiert ... Dime vor 13 Jahren 0

1 Antwort auf die Frage

3
Tex Hex

Ich denke es gibt keinen Gegenwert von $! In Windows.

Wenn Sie die PID des dritten Prozesses abrufen möchten, können Sie mit WMI danach suchen. Ein Beispiel dafür finden Sie hier (nur Suchen und Anzeigen der Informationen) oder hier (Suchen und Abbrechen des Prozesses).

Wenn die ausführbare Datei des dritten Namens nicht bekannt ist, möchten Sie möglicherweise ein Job-Objekt verwenden, das mehrere Prozesse in einem Objekt zusammenfasst. Und mit TerminateJobObject können Sie alle auf einmal töten .

Einen kurzen Überblick oder diese Frage zu StackOverflow finden Sie unter MSDN .

Ich weiß jedoch nicht, ob diese Methoden von VBScript verwendet werden können.

Ich kann nicht abstimmen :( Nicht genügend Ruf. Dime vor 13 Jahren 0
Tun Sie es, wenn Sie genug Vertreter haben - nur ein Scherz, kein Problem. Wenn die Informationen hilfreich waren, reicht das für mich. Tex Hex vor 13 Jahren 0