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 for
Schleife 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
Antworten:
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':
dann lesen Sie die Umgebungsvariable später ...
Eine andere Möglichkeit wäre die Verwendung der Registrierung und des Befehls REG.
quelle
wmic process where "name='VirtualBox.exe'" ^| find "GitHubEnterprise"
Befehl