标题: 关于进程
[打印本页]
作者: xg911335
时间: 2006-9-23 02:34
标题: 关于进程
请问怎样判断进程是否存在?请给个列子。谢谢各位!
作者: namejm
时间: 2006-9-23 02:42
XP下,可以用tasklist命令来列出当前进程。
tasklist|findstr /i "×××.exe">nul && echo "×××.exe"正在运行||echo ""×××.exe"没有运行
作者: xg911335
时间: 2006-9-23 03:18
谢谢namejm,麻烦你帮我解释一下|、&&、||这几个的含义。
@for /f %%i in ('tasklist ^|find /i "xxx.exe"') do (
@if %%i =="" goto end
taskkill /f /im %%i /T >unl
echo %%i进程被结束
)
:end
echo %%i没有发现进程
pause
执行完会显示
echo %i没有发现进程
echo %i没有发现进程
怎么会这样?
[
Last edited by xg911335 on 2006-9-23 at 03:46 ]
作者: namejm
时间: 2006-9-23 06:36
| 管道符号。表示把前面命令的输出作为后面命令的输入。比如 echo abc|find "a" 表示把 echo 的输出结果abc字符串作为 find "a" 的搜索对象;
&& 连接符号。如果前面的语句执行成功,则执行后面的语句;
|| 连接符号。和 && 的意思正好相反,表示如果前面的语句执行失败,就执行后面的语句。
你在『第 3 楼』的代码存在如下几个错误:
1、如果成功关闭了 xxx.exe ,那么,echo %%i进程被结束 这一句执行之后,因为它之后再没有跳转语句,所以会继续执行 :end 标签段的内容;
2、因为 %%i 是 for 语句中的变量,一旦for语句执行完毕之后,就不能再用 %%i 的格式来引用变量,而应换成百分号对中夹字符的%var%格式;
另外,如果当前进程中没有你find的内容,for语句将没有任何输出,用空字符串来判断的方法好象不太成功,原因暂时还位找到。以下语句应该可以满足你的需求:
@echo off
tasklist|find /i "qq.exe">nul && (
taskkill /f /T /im "qq.exe">nul
echo 进程 qq.exe 被结束
) || (
echo 没有发现进程 qq.exe
)
pause
作者: xg911335
时间: 2006-9-23 09:23
非常感谢你的回答,你让我学到了很多东西.由衷的谢谢您,namejm!比如我想结束几个进程,但有的运行了有的没有运行,所以才想加入判断,有则结束,没有则跳过?用你4楼的代码结束一两还可以。不过结束的进程多了,代码也就多了。代码执行效率就差了。有没有什么更好的代码呢?
[
Last edited by xg911335 on 2006-9-23 at 09:26 ]
作者: vkill
时间: 2006-9-23 21:55
回楼上,结束进程很快的啊,结束多进程加个 txt文件就是了,何来代码多?
作者: 3742668
时间: 2006-9-24 07:20
Quote: |
『第 4 楼』:
....
另外,如果当前进程中没有你find的内容,for语句将没有任何输出,用空字符串来判断的方法好象不太成功,原因暂时还位找到... |
|
如果没有find的内容,其实这段代码:
Quote: |
@for /f %%i in ('tasklist ^|find /i "xxx.exe"') do (
@if %%i =="" goto end
taskkill /f /im %%i /T >unl
echo %%i进程被结束
) |
|
执行的情况应该为:
既然
没有循环条件,那么循环就一次也
不会执行。
Quote: |
『第 5 楼』:
非常感谢你的回答,你让我学到了很多东西.由衷的谢谢您,namejm!比如我想结束几个进程,但有的运行了有的没有运行,所以才想加入判断,有则结束,没有则跳过?.... |
|
taskkill /f /T /im "exe1.exe" /im "exe2.exe" /im "exe3.exe" ... 2>nul
不需要你自己判断,taskkill能够应付这种情况。
作者: mobo
时间: 2006-9-24 09:18
标题: ::查找进程中有无指定的运行程序.bat
::查找进程中有无指定的运行程序.bat
::------------BY MOBO
::查看进程:
wmic process where name='explorer.exe' get caption>out.txt
::终止进程:
wmic process where name='explorer.exe' call terminate
::用WMIC有很多功能,望大家深挖,共同交流.
作者: xg911335
时间: 2006-9-24 13:32
谢谢各位朋友.已结!
作者: namejm
时间: 2006-10-22 08:15
──────────────── 版务记录 ────────────────
执行:namejm
原标题:关于进程
说明:因标题过于模糊,不便于论坛的搜索和管理,请在三日内修改标题。
提示:修改标题请在当前帖的右下脚点 编辑,
修改完毕之后按 编辑帖子 即可。
处罚:因属论坛新人,暂时不予处罚;若三日之后尚未修改标题,将扣除4点积分,
以示惩罚,并由版主强制修改标题。请点击这里阅读论坛发帖规定,以避免在
今后的讨论中违规发帖。
──────────────── 版务记录 ────────────────