@echo off
setlocal enabledelayedexpansion
c:\windows\handle64.exe /s /p lsass.exe | findstr Total > %TMP%\handles_number.txt
for /f "tokens=3 delims= " %%i in (%TMP%\handles_number.txt) do (
 set xxxx=00%%i
 set yyyy=!xxxx:~-6!
  if !yyyy! GEQ 10240 (
    c:\windows\system32\shutdown /r /f /t 30
  ) else (
    echo ---------
    echo lsass.exe program handles number is %%i
  )
)


注释:
1. 关闭显示输出
2. 设定变量延迟扩展(https://www.jb51.net/article/29323.htm)
3. 使用handle(https://docs.microsoft.com/en-us/sysinternals/downloads/handle)查询lsass.exe程序当前的句柄数量,并重定向到临时文件内
4. 使用for tokens 分割临时文件内容,并截取第3段内容
5. 对数字变量%i补0,以满足数字位数要求
6. 对数字变量,截取后5位
7. if else判断,如果数字变量大于等于10240,重启OS
 

11-25 19:57