@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
来源:oschina
链接:https://my.oschina.net/u/3362827/blog/3133382