我想编写一个批处理文件来检查进程是否正在运行,如果正在运行,则执行一个操作,如果没有,则执行另一个操作。
我知道我可以使用任务列表列出所有正在运行的进程,但是有没有更简单的方法来直接检查特定进程?
看起来这应该可行,但事实并非如此:
tasklist /fi "imagename eq firefox.exe" /hn | MyTask
IF %MyTask%=="" GOTO DO_NOTHING
'do something here
:DO_NOTHING
使用 atzz 提供的解决方案,这里是一个完整的工作演示:
编辑:简化并修改为在 WinXP 和 Vista 下工作
echo off
set process_1="firefox.exe"
set process_2="iexplore.exe"
set ignore_result=INFO:
for /f "usebackq" %%A in (`tasklist /nh /fi "imagename eq %process_1%"`) do if not %%A==%ignore_result% Exit
for /f "usebackq" %%B in (`tasklist /nh /fi "imagename eq %process_2%"`) do if not %%B==%ignore_result% Exit
start "C:\Program Files\Internet Explorer\iexplore.exe" www.google.com
您可以使用“for /f”结构来分析程序输出。
set running=0
for /f "usebackq" %%T in (`tasklist /nh /fi "imagename eq firefox.exe"`) do set running=1
另外,坚持一个好主意
setlocal EnableExtensions
在脚本的开头,以防万一用户默认禁用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)