我有一个批处理脚本,它启动一个启动器文件并等待所有子程序加载并检查 Chrome 浏览器是否已关闭,如果“是”,则它会关闭该过程中的所有其他程序。
如果 Chrome 浏览器没有关闭,它会循环直到关闭。
发现的问题是它在循环中使用 find 命令,从而导致大量内存使用。(我发现很少有在 CMD.exe 下运行的“查找”和“任务列表”命令)附上截图。. 这是基于进程资源管理器发现的,任何人都可以建议我以最简单的方式使用相同的代码,从而使其使用更少的内存。提前致谢。
目的 (我选择了(Chromium)版本的 php-desktop 来对 php 文件进行自定义编程。当(浏览器)关闭时,所有其他 PHP 和 Portable Chromium 文件都未在任务列表中关闭。为此,我想运行批处理它开始检查浏览器状态的程序,一旦关闭,所有其他子程序都被强制关闭。)
@echo off
SETLOCAL
REM Main FILE to be loded and wait for 25 Sec so that sub programs will load
start Launcher.exe
timeout /t 25 /nobreak > NUL
REM Check Browser is closed if closed then goes to ITSOut if not runs untill its closed
:MAIN
tasklist | FIND "Chrome.exe" 2>NUL | find /I /N "Chrome.exe">NUL
if "%ERRORLEVEL%"=="0" GOTO :MAIN
if "%ERRORLEVEL%"=="1" GOTO :ITSout
REM Checks browser is still open (exists) after confirming it closes sub programs
:ITSout
tasklist | FIND "Chrome.exe" 2>NUL | find /I /N "Chrome.exe">NUL
if "%ERRORLEVEL%"=="0" GOTO :MAIN
FOR /f "tokens=2" %%i IN (
' tasklist ^| find "ChromiumPortable.exe" '
) DO SET pid=%%i
IF DEFINED pid (
REM ECHO TASKKILL /pid %pid% /T
TASKKILL /pid %pid% /F /T
) ELSE (GOTO :MAIN)
tasklist | FIND "Chrome.exe" 2>NUL | find /I /N "Chrome.exe">NUL
if "%ERRORLEVEL%"=="0" GOTO :MAIN
REM echo "SETLOCAL top line phpdesktop.exe is here"
FOR /f "tokens=2" %%i IN (
' tasklist ^| find "phpdesktop.exe" '
) DO SET pid=%%i
IF DEFINED pid (
REM ECHO TASKKILL /pid %pid% /T
TASKKILL /pid %pid% /F /T
) ELSE (GOTO :MAIN)
GOTO eof