WMIC でバッチを使用してプロセスが実行されていることを確認する

WMIC でバッチを使用してプロセスが実行されていることを確認する

プロセスが実行中かどうかを確認するスクリプトを作成しようとしています(私の場合は仮想マシン)

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

こうすることで、GitHub のインスタンスが実行中かどうかを確認できますが、find の出力をファイルに書き込んでから、それを読み戻してファイルを削除できる必要があります。(VirtualBox.exe のコピーが常に 2 つ実行されているため、GitHubEnterprise インスタンスが実行中であることを確認しようとしていることに注意してください)。

私がやりたいのは、この count 数値を find から直接変数に格納するか、何らかの形式の if ステートメントで使用することです。

これについて私自身が調査したところ、ループを使用するという提案が数多くありましたforが、次の方法で試してみましたが、成功しませんでした。

@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

どなたか、私がここで何を間違っているのか気づいたり、教えてくれたり、もっと良い方法を提案してくれたりしませんか。

皆さんありがとう、良い一日をお過ごしください。

JD

答え1

SETXを使ってみてください。

環境変数を設定する、セトックスマシン (HKLM) または現在ログオンしているユーザー (HKCU) の環境変数を設定するために使用できます。

ユーザー環境で変数 _my_count を '5' に設定します。

セットX _my_count 5

その後、環境変数を読み取ります...

IF "%_my_count%" == "" の場合、これを実行

別の方法としては、レジストリと REG コマンドを使用することです。

関連情報