
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 GitHub-Instanz ausgeführt wird oder nicht. Dazu muss ich jedoch die Ausgabe von „find“ in eine Datei schreiben, sie dann wieder einlesen und die Datei löschen können. (Es sollte beachtet werden, dass immer zwei Kopien von VirtualBox.exe ausgeführt werden, daher versuche ich zu überprüfen, ob die GitHubEnterprise-Instanz ausgeführt wird.)
Ich möchte diese Zählzahl aus der Suche direkt in einer Variablen speichern oder sie in der Form einer if-Anweisung verwenden.
Bei meinen eigenen Recherchen zu diesem Thema habe ich viele Vorschläge gesehen, for
hierfür eine Schleife zu verwenden, und ich habe es auf folgende Weise erfolglos 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 sehen/sagen, was ich hier falsch mache oder einen Vorschlag machen, wie man es besser machen kann?
Vielen Dank an alle, ich wünsche Ihnen einen schönen Tag.
JD
Antwort1
Versuchen Sie es mit SETX,
Umgebungsvariablen festlegen,SETXkann verwendet werden, um Umgebungsvariablen für die Maschine (HKLM) oder den aktuell angemeldeten Benutzer (HKCU) festzulegen:
Setzen Sie die Variable _my_count in der Benutzerumgebung auf „5“:
SetX _meine_Anzahl 5
dann lesen Sie die Umgebungsvariable später ...
WENN "%_my_count%" == "" GEHE ZU DIESEM
eine andere Möglichkeit wäre, die Registrierung und den REG-Befehl zu verwenden.