1

我正在尝试编写循环并告诉某个进程是否打开的代码。它应该是一个循环,它会实时显示进程是否打开。换句话说,文本会在程序打开时改变,而在程序关闭时再次改变。相反,我得到的是具有相同文本的洪水,它没有在其下方显示“回声”。

我试过这个:

@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
4

1 回答 1

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

于 2015-08-15T11:51:06.913 回答