找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27102|回复: 9

[系统相关] 【已解决】批处理如何检测多个进程再进行下一步?

[复制链接]
发表于 2014-10-14 10:38:24 | 显示全部楼层 |阅读模式
本帖最后由 小智BAT 于 2014-10-16 14:14 编辑

如题。以下是检测360没退出而提示的,但我需要检测除360外,还需要检测ksafetray.exe,kxetray.exe
,QQPCTray.exe等是否运行,运行就提示对应的进程,如果全部不运行才可以进行下一步,该写。

  1. :daxfsddo
  2. cls
  3. color 4f
  4. tasklist /nh|find /i "360tray.exe" >nul
  5. if ERRORLEVEL 1 (goto daxfsddonext) else (echo 检测到360安全软件没有退出,请先退出“360安全卫士”和“360杀毒”再按任意键重试。)
  6. pause >nul&goto daxfsddo
  7. :daxfsddonext
复制代码
发表于 2014-10-14 10:54:16 | 显示全部楼层
本帖最后由 DAIC 于 2014-10-14 10:55 编辑
  1. @echo off
  2. :daxfsddo
  3. cls
  4. color 4f
  5. tasklist /nh | find /i "360tray.exe" >nul && echo 请先退出 360tray.exe 再按任意键重试 && pause && goto :daxfsddo
  6. tasklist /nh | find /i "ksafetray.exe" >nul && echo 请先退出 ksafetray.exe 再按任意键重试 && pause && goto :daxfsddo
  7. tasklist /nh | find /i "kxetray.exe" >nul && echo 请先退出 kxetray.exe 再按任意键重试 && pause && goto :daxfsddo
  8. tasklist /nh | find /i "QQPCTray.exe" >nul && echo 请先退出 QQPCTray.exe 再按任意键重试 && pause && goto :daxfsddo

  9. :daxfsddonext
  10. echo 下一步
  11. pause
复制代码
发表于 2014-10-14 10:56:14 | 显示全部楼层
  1. @echo off
  2. :daxfsddo
  3. cls
  4. color 4f
  5. for %%i in (360tray.exe ksafetray.exe kxetray.exe QQPCTray.exe) do (
  6.     tasklist /nh | find /i "%%i" >nul && echo 请先退出 %%i 再按任意键重试 && pause && goto :daxfsddo
  7. )

  8. :daxfsddonext
  9. echo 下一步
  10. pause
复制代码
 楼主| 发表于 2014-10-14 11:16:56 | 显示全部楼层
回复 3# DAIC

请问可以定义提示退出什么进程是文字显示模式吗?,如检测到QQPCTray.exe就提示请退出电脑管家。

如有360tray.exe就提示请退出360安全软件,

如发现多个进程共存时,则提示多个对应的提示语。
发表于 2014-10-14 12:22:32 | 显示全部楼层
回复 4# 小智BAT


    2楼那个代码,你想显示什么就把echo后面改成什么。
 楼主| 发表于 2014-10-14 12:45:00 | 显示全部楼层
回复 5# DAIC


    你把中一个改为常用进程,如cmd.exe和QQ.exe,你运行时退出任意一个再按任意键就知道什么情况。
 楼主| 发表于 2014-10-14 12:47:04 | 显示全部楼层
回复 5# DAIC


    我要的是检测到两个进程要同时提示两个进程存在。
发表于 2014-10-14 13:08:38 | 显示全部楼层
  1. @echo off
  2. :daxfsddo
  3. cls
  4. color 4f
  5. set n=0
  6. tasklist /nh | find /i "360tray.exe" >nul && echo 360tray.exe && set n=1
  7. tasklist /nh | find /i "ksafetray" >nul && echo ksafetray.exe && set n=1
  8. tasklist /nh | find /i "kxetray.exe" >nul && echo kxetray.exe && set n=1
  9. tasklist /nh | find /i "QQPCTray.exe" >nul && echo QQPCTray.exe && set n=1
  10. if %n% neq 0 (
  11.     echo 请先退出以上程序再按任意键重试
  12.     pause
  13.     goto :daxfsddo
  14. )
  15. :daxfsddonext
  16. echo 下一步
  17. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
小智BAT + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-10-14 13:37:05 | 显示全部楼层
回复 8# DAIC


    多谢大大。。。。
发表于 2014-10-14 18:44:20 | 显示全部楼层
本帖最后由 apang 于 2014-10-14 18:54 编辑

如果进程名不含空格的话,也可以这样
  1. @echo off & setlocal enabledelayedexpansion
  2. set "explorer.exe=资源管理器"
  3. set "Iexplore.exe=IE"
  4. set "NotePad.exe=记事本"
  5. set "re=explorer.exe Iexplore.exe NotePad.exe "
  6. (for /f %%a in ('tasklist^|findstr /ib "%re: =\> %"') do (
  7.         echo,%%a 杀死 !%%a!
  8. ))||echo,Next
  9. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 22:20 , Processed in 0.031404 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表