在 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 /?
获取更多关于如何批量调用子例程的信息。
我正在尝试编写循环代码并判断某个进程是否打开。它应该是一个循环,可以实时显示进程是否打开。换句话说,文本会在程序打开时发生变化,并在程序关闭时再次发生变化。相反,我得到的是大量相同的文本,但没有显示下面的 '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 /?
获取更多关于如何批量调用子例程的信息。