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

[其他] [已解决]批处理根据进程判断程序是否关闭当出现多个连带进程时如何判断

[复制链接]
发表于 2016-7-16 22:38:17 | 显示全部楼层 |阅读模式
本帖最后由 yunyan100 于 2016-7-17 10:25 编辑

在坛子里找的代码,判断进程是否存在,然后执行相关操作, 但是这个程序  产生了两个进程,而且关闭程序后另一个进程还在, 导致不能执行清理工作, 请问 各位有没有什么办法可 以解决?谢谢
  1. @echo off
  2. rem 注册内容
  3. call WiseRegCleaner.exe
  4. :a
  5. set a=
  6. tasklist|find /i "WiseRegCleaner.exe">nul 2>nul&&set b==||set a==
  7. if "%a%%b%"=="==" (
  8. rem 删除注内容
  9. cd..&rd /s/q "%~dp0"
  10. del /q /f "%~f0" 2>nul
  11. exit
  12. )else (
  13. ping 127.1 -n 2 >nul
  14. goto:a
  15. )
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2016-7-16 23:02:13 | 显示全部楼层
本帖最后由 lxzzr 于 2016-7-16 23:08 编辑

回复 1# yunyan100
  1. @echo off
  2. for /f "skip=1 delims=" %%a in (
  3.         '^(wmic process where "name='WiseRegCleaner.exe'" get name /value^) 2^<^&1'
  4.         ) do (
  5.         call set %%a>nul
  6. )

  7. if defined name (
  8.         echo."已存在"
  9.         rem some codes ...
  10. ) else (
  11.         echo."不存在"
  12.         rem some codes ...
  13. )

  14. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2016-7-16 23:30:56 | 显示全部楼层
回复 2# lxzzr


    首先感谢lxzzr的回答, 可能是我 描述不清晰, 你的代码并不能 满足我的功能,我的代码功能是, 先 调用程序, 然后判断程序 是否 存在, 不存在 就清理,但因为是用7zSfx封成单文件,所以产生了两个进程, 导致无法 进行清理,我的想法是 可不可以判断 哪个是 程序进程,哪个是7zsfx产生的进程,方便进行清理,因为7zsfx清理功能 有点麻烦而我又是自定义解压目录(不使用临时模式),
 楼主| 发表于 2016-7-16 23:37:44 | 显示全部楼层
我试了下在前面 先进行判断 进程如果有就kill掉可以, 但不 知道有没有什么后遗症还是谢谢了
  1. @echo off
  2. rem 注册内容
  3. tasklist|findstr /i "WiseRegCleaner.exe"&taskkill /f /im "WiseRegCleaner.exe"
  4. call WiseRegCleaner.exe
  5. :a
  6. set a=
  7. tasklist|find /i "WiseRegCleaner.exe">nul 2>nul&&set b==||set a==
  8. if "%a%%b%"=="==" (
  9. rem 删除注内容
  10. cd..&rd /s/q "%~dp0"
  11. del /q /f "%~f0" 2>nul
  12. exit
  13. )else (
  14. ping 127.1 -n 2 >nul
  15. goto:a
  16. )
复制代码
回复 2# lxzzr
发表于 2016-7-16 23:39:44 | 显示全部楼层
进程数固定且同名的话,以数量作为判断,关闭程序后,进程数少1,则结束其他进程后删除;或者进程名不同的话,以指定进程名作为判断,关闭程序后,指定进程退出,则结束其他名字的进程后删除
 楼主| 发表于 2016-7-16 23:44:16 | 显示全部楼层
回复 5# pcl_test


    TKS,多谢提醒
 楼主| 发表于 2016-7-17 00:21:25 | 显示全部楼层
回复 5# pcl_test


    我试了下, 通过进程数量是可以,但 因为这个程序他需要获取管理员权限,也就是会重启一次,这里会导致进程数 改变而执行不应该执行的命令还是先kill掉  那个可以 达到 目的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 15:09 , Processed in 0.018287 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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