我想编写一个批处理脚本,只有当cmd.exe的运行次数少于2次时才执行某个操作。我找到了一种解决方案,它将出现次数存储在临时文件中,但我觉得这样做非常不优雅。所以我的问题是如何在不使用临时文件的情况下完成与下面相同的操作,而是通过将
@TASKLIST | FIND /I /C "%_process%"
给出的出现次数存储在变量中来实现。我看到可能有一个使用for循环的解决方案,但我无法让它工作,无论如何,我真的更喜欢基于SET
的解决方案(如果可能的话)。@SET _process=cmd.exe
@SET _temp_file=tempfiletodelete.txt
@TASKLIST | FIND /I /C "%_process%" > %_temp_file%
@SET /p _count=<%_temp_file%
@DEL /f %_temp_file%
@IF %_count% LSS 2 (
@ECHO action 1
) ELSE (
@ECHO action 2
)
编辑: 这个问题类似于保存FIND命令的输出到变量,但我无法将解决方案应用于我的问题,并且我想知道是否有一种没有for循环的解决方案。
for /F %%a in ('@TASKLIST ^| FIND /I /C "%_process%"') do @SET "_count=%%a"
- Aacinifor / F
(需要像^|
这样转义管道); 除了使用临时文件之外,没有基于set
[/P
]的方法... - aschipfl