是否可以根据打开程序的用户为批处理生成if语句?
我试过了:
color c
echo off
cls
:props
if open WINWORD.exe (echo a & pause 10 & exit)
goto props
这样做只会发布错误'此时WINWORD意外。'并终止命令提示符。
我想要实现的是一个批处理文件:
答案 0 :(得分:2)
您可以使用tasklist.exe
和find
来搜索流程来计算实例:
set PROC=winword.exe
tasklist /FI "IMAGENAME eq %PROC%" | find /C /I "%PROC%"
我使用变量%PROC%
来指定进程(*.exe
)名称只是为了方便起见。
find
也将以1的返回码(ErrorLevel
)退出。使用简单的if
语句,您可以按照自己的要求执行操作:
if not ErrorLevel 1 ((echo a) & timeout /T 10 /NOBREAK & exit)
我将pause 10
替换为timeout
命令,因为pause
等待用户按任意键(忽略任何参数)。开关/NOBREAK
表示忽略任何按键操作。
echo a
周围的括号可以避免回显尾随空格。
总而言之,以下内容应该符合您的要求:
color c
echo off
set PROC=winword.exe
cls
:props
tasklist /FI "IMAGENAME eq %PROC%" | find /C /I "%PROC%" > nul
if not ErrorLevel 1 ((echo a) & timeout /T 10 /NOBREAK & exit)
timeout /T 1 /NOBREAK > nul
goto props
> nul
之后的(可选)find
部分阻止它显示找到的实例数。
已插入第二个延迟时间timeout /T 1
以避免此循环结构中的大量CPU负载。