在 Windows 批次中查找打开的进程

Find opened process in Windows batch

我正在尝试编写循环代码并判断某个进程是否打开。它应该是一个循环,可以实时显示进程是否打开。换句话说,文本会在程序打开时发生变化,并在程序关闭时再次发生变化。相反,我得到的是大量相同的文本,但没有显示下面的 'echos'。

我试过这个:

@echo off 
goto xera
:start 
tasklist /FI "IMAGENAME eq notepad.exe" | find /I "notepad.exe" > nul
IF %ERRORLEVEL% equ 0 ECHO is opened
IF %ERRORLEVEL% equ 1 ECHO isnt opened 
:xera
    set /p "=Status: " <nul &call :start //the code got 'stuck' here
    ECHO Text 2 (doesnt show)
    pause>nul

您没有正确终止您的子程序 :start。尝试以下操作:

@echo off 
goto xera
:start 
tasklist /FI "IMAGENAME eq notepad.exe" | find /I "notepad.exe" > nul
IF %ERRORLEVEL% equ 0 ECHO is opened
IF %ERRORLEVEL% equ 1 ECHO isnt opened
exit /b
:xera
set /p "=Status: " <nul &call :start
ECHO Text 2 (doesnt show)
pause>nul

我在实际调用它的 call 语句之后插入了 exit /b,它告诉命令解释器 return 到命令。您也可以改用 goto :EOF。输入call /?获取更多关于如何批量调用子例程的信息。