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

时间:2015-08-15 03:02:26

标签: windows batch-file cmd tasklist

我试图编写循环的代码并告诉某个进程是否被打开。它应该是一个循环,如果进程打开,将实时显示我。换句话说,文本将在程序打开时更改,并在程序关闭时再次更改。相反,我得到的是带有相同文字的洪水,并且它没有显示回声' 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

1 个答案:

答案 0 :(得分:1)

您没有正确终止子例程: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 /?以获取有关如何批量调用子例程的更多信息。