标题: [其他] [已解决]批处理根据进程判断程序是否关闭当出现多个连带进程时如何判断 [打印本页]
作者: yunyan100 时间: 2016-7-16 22:38 标题: [已解决]批处理根据进程判断程序是否关闭当出现多个连带进程时如何判断
本帖最后由 yunyan100 于 2016-7-17 10:25 编辑
在坛子里找的代码,判断进程是否存在,然后执行相关操作, 但是这个程序 产生了两个进程,而且关闭程序后另一个进程还在, 导致不能执行清理工作, 请问 各位有没有什么办法可 以解决?谢谢- @echo off
- rem 注册内容
- call WiseRegCleaner.exe
- :a
- set a=
- tasklist|find /i "WiseRegCleaner.exe">nul 2>nul&&set b==||set a==
- if "%a%%b%"=="==" (
- rem 删除注内容
- cd..&rd /s/q "%~dp0"
- del /q /f "%~f0" 2>nul
- exit
- )else (
- ping 127.1 -n 2 >nul
- goto:a
- )
复制代码
作者: lxzzr 时间: 2016-7-16 23:02
本帖最后由 lxzzr 于 2016-7-16 23:08 编辑
回复 1# yunyan100 - @echo off
- for /f "skip=1 delims=" %%a in (
- '^(wmic process where "name='WiseRegCleaner.exe'" get name /value^) 2^<^&1'
- ) do (
- call set %%a>nul
- )
-
- if defined name (
- echo."已存在"
- rem some codes ...
- ) else (
- echo."不存在"
- rem some codes ...
- )
-
- pause
复制代码
作者: yunyan100 时间: 2016-7-16 23:30
回复 2# lxzzr
首先感谢lxzzr的回答, 可能是我 描述不清晰, 你的代码并不能 满足我的功能,我的代码功能是, 先 调用程序, 然后判断程序 是否 存在, 不存在 就清理,但因为是用7zSfx封成单文件,所以产生了两个进程, 导致无法 进行清理,我的想法是 可不可以判断 哪个是 程序进程,哪个是7zsfx产生的进程,方便进行清理,因为7zsfx清理功能 有点麻烦而我又是自定义解压目录(不使用临时模式),
作者: yunyan100 时间: 2016-7-16 23:37
我试了下在前面 先进行判断 进程如果有就kill掉可以, 但不 知道有没有什么后遗症还是谢谢了- @echo off
- rem 注册内容
- tasklist|findstr /i "WiseRegCleaner.exe"&taskkill /f /im "WiseRegCleaner.exe"
- call WiseRegCleaner.exe
- :a
- set a=
- tasklist|find /i "WiseRegCleaner.exe">nul 2>nul&&set b==||set a==
- if "%a%%b%"=="==" (
- rem 删除注内容
- cd..&rd /s/q "%~dp0"
- del /q /f "%~f0" 2>nul
- exit
- )else (
- ping 127.1 -n 2 >nul
- goto:a
- )
复制代码
回复 2# lxzzr
作者: pcl_test 时间: 2016-7-16 23:39
进程数固定且同名的话,以数量作为判断,关闭程序后,进程数少1,则结束其他进程后删除;或者进程名不同的话,以指定进程名作为判断,关闭程序后,指定进程退出,则结束其他名字的进程后删除
作者: yunyan100 时间: 2016-7-16 23:44
回复 5# pcl_test
TKS,多谢提醒
作者: yunyan100 时间: 2016-7-17 00:21
回复 5# pcl_test
我试了下, 通过进程数量是可以,但 因为这个程序他需要获取管理员权限,也就是会重启一次,这里会导致进程数 改变而执行不应该执行的命令还是先kill掉 那个可以 达到 目的
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |