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