如何通过批处理脚本检查进程是否正在运行
我如何检查应用程序是否从批处理(well cmd)文件运行?
如果程序已经运行,我不需要启动另一个实例。 (我无法将应用程序更改为仅限单一实例。)
此外,该应用程序可以作为任何用户运行。
我使用grep的另一个可能性是:
tasklist /FI "IMAGENAME eq myapp.exe" 2>NUL | find /I /N "myapp.exe">NUL
if "%ERRORLEVEL%"=="0" echo Program is running
它不需要保存一个额外的文件,所以我更喜欢这种方法。
以下是我的工作方式:
tasklist /FI "IMAGENAME eq notepad.exe" /FO CSV > search.log
FOR /F %%A IN (search.log) DO IF %%~zA EQU 0 GOTO end
start notepad.exe
:end
del search.log
如果它尚未运行,上面将打开记事本。
编辑:请注意,这不会找到任务列表中隐藏的应用程序。 这将包括以不同用户身份运行的所有计划任务,因为这些会自动隐藏。
我喜欢Chaosmaster的解决方案! 但是我寻找一个不启动另一个外部程序的解决方案(如find.exe或findstr.exe)。 所以我从Matt Lacey的解决方案中添加了这个想法,该解决方案创建了一个也是可以避免的临时文件。 最后,我可以找到一个相当简单的解决方案,所以我分享它...
SETLOCAL EnableExtensions
set EXE=myprog.exe
FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXE%"') DO IF %%x == %EXE% goto FOUND
echo Not running
goto FIN
:FOUND
echo Running
:FIN
这对我很好用...
链接地址: http://www.djcxy.com/p/51179.html上一篇: How to check if a process is running via a batch script
下一篇: Return to an already open application when a user tries to open a new instance