[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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. )
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 5# pcl_test


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

TOP

回复 5# pcl_test


    TKS,多谢提醒

TOP

进程数固定且同名的话,以数量作为判断,关闭程序后,进程数少1,则结束其他进程后删除;或者进程名不同的话,以指定进程名作为判断,关闭程序后,指定进程退出,则结束其他名字的进程后删除

TOP

我试了下在前面 先进行判断 进程如果有就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

TOP

回复 2# lxzzr


    首先感谢lxzzr的回答, 可能是我 描述不清晰, 你的代码并不能 满足我的功能,我的代码功能是, 先 调用程序, 然后判断程序 是否 存在, 不存在 就清理,但因为是用7zSfx封成单文件,所以产生了两个进程, 导致无法 进行清理,我的想法是 可不可以判断 哪个是 程序进程,哪个是7zsfx产生的进程,方便进行清理,因为7zsfx清理功能 有点麻烦而我又是自定义解压目录(不使用临时模式),

TOP

本帖最后由 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

评分人数

TOP

返回列表