中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-10-01 04:37
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,279 会员排行
DOS批处理 & 脚本技术(批处理室) » 能用P处理检测进程数目,并执行指定的动作吗?
可打印版本  941 / 7
第1楼 scy97 发表于 2009-05-22 05:48
新手上路 发帖 4 积分 4
能用P处理检测进程数目,并执行指定的动作吗?
我想用P处理或者是VBS来实现这个目的:
电脑刚开机时,就检查进程数目,如果超过24个,就发送一个以计算机名为文件名的文本文件到指定的远程目录。并自动关机。
如果没超过,就不用理会。

我最初写的代码是,如果进程里有1.exe,2.exe等进程就发送一个以计算机名为文件名的文本文件到指定的远程目录。并自动关机。下面附上我的代码:
------------------------------
tasklist | find /i "1.exe,2.exe" || goto aa
exit
:aa
tasklist >> c:\%computername%.txt
copy c:\%computername%.txt \\dy\Drv\a\Result
shutdown /f /s /t 10
exit
------------------------

可有人说我写的不对,给出了以下代码:

tasklist | find /i "1.exe,2.exe" || goto aa
tasklist >> c:\%computername%.txt
copy c:\%computername%.txt \\dy\Drv\a\Result
shutdown /f /s /t 10
exit
:aa
exit

这人的代码我是这样理解的:
如果有 1.exe ,就 goto aa, 而aa 下面是 exit ,就退出了。
如果没有 1.exe ,就执行 tasklist>> , copy , 这些命令。
这样的话不是正好与我的要求相反了吗??

期待高手指点,谢谢。

[ Last edited by scy97 on 2009-5-22 at 06:04 ]
第2楼 Hanyeguxing 发表于 2009-05-22 14:42
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
@echo off
tasklist | find /i "explorer.exe,svchost.exe" || goto aa
echo 无
pause
:aa
echo 有
pause
你运行看看,显示的是什么?
实践是检验真理的唯一标准!
第3楼 scy97 发表于 2009-05-23 08:16
新手上路 发帖 4 积分 4
Originally posted by Hanyeguxing at 2009-5-22 14:42:
@echo off
tasklist | find /i "explorer.exe,svchost.exe" || goto aa
echo 无
pause
:aa
echo 有
pause
你运行看看,显示的是什么?
实践是检验真理的唯一标准!


显示有,这两个进程正常的机器开机也有呀。
第4楼 scy97 发表于 2009-05-23 08:18
新手上路 发帖 4 积分 4
哪位高手能写个
“用P处理检测进程数目,并执行指定的动作 ”
的P处理么?
第5楼 gdyabc 发表于 2009-05-24 02:59
初级用户 发帖 37 积分 41 来自 四川南充
tasklist>test.txt
find /n "exe" test.txt>test2.txt
第6楼 Hanyeguxing 发表于 2009-05-24 04:02
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
Originally posted by scy97 at 2009-5-23 08:16:


显示有,这两个进程正常的机器开机也有呀。

换成这两个进程名,仅是为了方便测试批处理。。。
第7楼 jlty258 发表于 2009-05-25 11:54
初级用户 发帖 34 积分 37
应该没问题,自己试着写写看
第8楼 guo882633 发表于 2009-07-07 03:24
初级用户 发帖 53 积分 126 来自 -
@echo off
:dd
for /f "delims=" %%a in (jw.txt) do call set "proc=%%proc%%%%a "
for /f %%a in ('tasklist /nh^|findstr /i /v "%proc%"') do taskkill /im %%a /f
goto dd

看看这个对你有没有帮助。。功能:结束已知进程外的所有进程。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023