Verwenden von Batch, um zu überprüfen, ob ein Prozess mit WMIC ausgeführt wird

0

Ich versuche, ein Skript zu schreiben, das überprüft, ob ein Prozess ausgeführt wird (in meinem Fall eine virtuelle Maschine).

@echo off
wmic process where name="VirtualBox.exe" | find "GitHubEnterprise" /c > tmpcount
set /p count= < tmpcount
echo Number of instances = %count%

Auf diese Weise kann ich sehen, ob meine Instanz von GitHub ausgeführt wird oder nicht. Voraussetzung ist jedoch, dass ich die Ausgabe von find in eine Datei schreiben und dann wieder einlesen und die Datei löschen kann. (Es sollte beachtet werden, dass zu jeder Zeit zwei Kopien von VirtualBox.exe ausgeführt werden. Daher versuche ich zu überprüfen, ob die GitHubEnterprise-Instanz ausgeführt wird.)

Was ich tun möchte, ist, diese Zählnummer aus dem Fund direkt in einer Variablen zu speichern oder sie in einer Form einer if-Anweisung zu verwenden.

Aus meiner eigenen Forschung habe ich nun viele Vorschläge für die Verwendung einer forSchleife dafür gesehen, und ich habe es auf die folgende Weise ohne Erfolg versucht:

@echo off
setlocal enableextensions
for /f "tokens=*" %%a in (
'wmic process where "name='VirtualBox.exe'" ^| find "GitHubEnterprise" /c'
) do ( 
@set count = %a
)
echo Number of instances = %count%
pause
endlocal

Kann mir jemand sagen, was ich hier falsch mache oder einen Vorschlag machen, dies besser zu machen.

Vielen Dank an alle, einen schönen Tag.

JD

JDD
quelle
Könnten Sie einfach ein Start & Shutdown-Skript für GitHubEnterprise schreiben? Haben Sie einen Anruf zu Hause / eine E-Mail an Sie, wann immer das Betriebssystem der virtualbox gestartet oder heruntergefahren wird? Es wäre schön, wenn wir genau wüssten, was Sie erreichen wollen ...
Logman
Es ist ein Skript, das alle 5 Minuten ausgeführt wird, um sicherzustellen, dass die GitHubEnterprise-VM aktiv ist. Wenn dies nicht der Fall ist, wird versucht, es erneut zu starten. Ich habe dies bereits in Arbeit, aber ich möchte die Abhängigkeit des Schreibens des Variablenwerts in eine Datei und des anschließenden Einlesens
JDD

Antworten:

0

Versuchen Sie es mit SETX,

Umgebungsvariablen setzen, SETX kann verwendet werden, um Umgebungsvariablen für die Maschine (HKLM) oder den aktuell angemeldeten Benutzer (HKCU) zu setzen:

Setzen Sie die Variable _my_count in der Benutzerumgebung auf '5':

SetX _my_count 5

dann lesen Sie die Umgebungsvariable später ...

IF "% _my_count%" == "" GOTO DOTHIS

Eine andere Möglichkeit wäre die Verwendung der Registrierung und des Befehls REG.

Logman
quelle
Können Sie zeigen , wie dies unter Verwendung eines mit der for - Schleife zu tun wmic process where "name='VirtualBox.exe'" ^| find "GitHubEnterprise" Befehl
JDD