如何使用批处理文件计算当前运行的具有相同名称的进程数量

San*_*er_ 9 process batch-file taskmanager windows-7

我想使用批处理文件来比较在我的Windows 7计算机上运行的名为"standard.exe"的进程数,以及名为"basic.exe"的进程数.如果名为"standard.exe"的进程数量等于名为"basic.exe"的进程数量,则不会发生任何情况,如果数字不相等,则应重新启动basic.exe.

有任何想法吗?已经找到以下代码来检查进程是否正在运行,但现在我想计算具有相同名称的进程数.

tasklist /FI "IMAGENAME eq myapp.exe" 2>NUL | find /I /N "myapp.exe">NUL
if "%ERRORLEVEL%"=="0" echo Programm is running
Run Code Online (Sandbox Code Playgroud)

提前致谢!

May*_*nza 8

使用您的示例只需将find中的/ N替换为/ C即可返回进程计数.

tasklist /FI "IMAGENAME eq myapp.exe" 2>NUL | find /I /C "myapp.exe"
Run Code Online (Sandbox Code Playgroud)

然后你可以把它减少到:

tasklist | find /I /C "myapp.exe"
Run Code Online (Sandbox Code Playgroud)

虽然Andriy M指出它会匹配myapp.exe和notmyapp.exe.

至于你问题的第二部分,只需这样做:

set a=tasklist /FI "IMAGENAME eq myapp.exe" 2>NUL | find /I /C "myapp.exe" 
set b=tasklist /FI "IMAGENAME eq myapp2.exe" 2>NUL | find /I /C "myapp2.exe" 
if not a==b do ( 
    stuff 
) 
Run Code Online (Sandbox Code Playgroud)


小智 6

如果您不想编写文件,请用tasklist和替换和设置var1命令

for /f "tokens=1,*" %%a in ('tasklist ^| find /I /C "standard.exe"') do set var1=%%a
Run Code Online (Sandbox Code Playgroud)

第二个相同.

for /f "tokens=1,*" %%a in ('tasklist ^| find /I /C "basic.exe"') do set var2=%%a
Run Code Online (Sandbox Code Playgroud)