Windowsで、実行中のプログラム(例:cmd.exe)が起動しているかを毎秒確認したい。コマンドtasklistの結果を「cmd.exe」でフィルタして毎秒表示してやれば良さそう。
ーーー
できた。思ったより便利。赤枠のところは時刻と回数のカウント。exeの表記は毎秒更新される。
ソース
takslist_forever.bat
@echo off
setlocal enabledelayedexpansion
SET DATE_STR=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
SET usrOpeHome=%~d0%~p0
if not exist C:\TEST\nul (mkdir C:\Windows\TEST)
cd C:\TEST
for /l %%i in (0,1,255) do cls && echo %DATE_STR% && echo !TIME! && echo %%i && tasklist | find "cmd" && ping -n 1 -w 1000 192.168.255.255 >nul 2>&1
ーーー
!TIME! を %TIME% にしちゃうと、バッチ開始時の時間のまま、ずっと時間が変わらない。
毎秒更新するためには、コマンド実行時に変数の中身を評価する仕組み(遅延環境変数)が必要らしい。青文字setlocalの行宣言をして、変数はビックリマークで囲む。
ーーー
Windows10でも動いた。必要なプログラムが起動しているか、ちょっとモニタリングするのに使えそう。