在Windows批处理中查找打开的进程

我试图编写循环的代码,并告诉某个进程是否被打开。 它应该是一个循环,如果过程被打开,它会实时显示我。 换句话说,程序打开时文本会改变,closures时会再次改变。 相反,我得到的是一个文本相同的洪水,它不显示下面的“回声”。

我试过这个:

@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 

Solutions Collecting From Web of "在Windows批处理中查找打开的进程"

您没有终止您的子程序:start正确: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 

我插入了exit /b ,它告诉命令解释器在实际调用它的call语句之后返回到命令。 你也可以使用goto :EOF来代替。 call /? 有关如何批量调用子例程的更多信息。