中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 结束除系统进程以外的进程的问题
作者:
标题: 结束除系统进程以外的进程的问题 上一主题 | 下一主题
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『楼 主』:  结束除系统进程以外的进程的问题

我在论坛看到这段代码,说是可以杀掉除下列Process.ini配置文件里面的进程的P处理,我实际运行了下,根本无法实现,不知道是这么回事情,请教各位下,请指出哪错误了,并帮忙写出代码.谢谢!~

@echo off&Setlocal EnableDelayedExpansion
for /f "tokens=1 delims=," %%a in ('tasklist /nh /FO CSV') do (
    for /f "delims=" %%b in (Process.ini) do (
        set /a flag+=1
        if /i not %%a=="%%b" set /a num+=1
    )
    if !flag! equ !num! taskkill /f /im %%a
    set /a flag=num=0
)
echo the end...

Process.ini进程如下

alg.exe
csrss.exe
explorer.exe
lsass.exe
smss.exe
ctfmon.exe
services.exe
svchost.exe
winlogon.exe
System
System Idle Process
Wscript.exe
cmd.exe

还有,我是用P处理生成如上程序,保存为TASKKILL.BAT
能正常输出,但却被过滤掉了一个%,应该不影响使用吧??

我是这么写的...
@echo off
echo @echo off^&Setlocal EnableDelayedExpansion >>c:\taskkill.bat
echo for /f "tokens=1 delims=," %%a in ('tasklist /nh /FO CSV') do ( >>c:\taskkill.bat
echo     for /f "delims=" %%b in (123.ini) do ( >>c:\taskkill.bat
echo         set /a flag+=1 >>c:\taskkill.bat
echo         if /i not %%a=="%%b" set /a num+=1 >>c:\taskkill.bat
echo     ) >>c:\taskkill.bat
echo     if !flag! equ !num! taskkill /f /im %%a >>c:\taskkill.bat
echo     set /a flag=num=0 >>c:\taskkill.bat
echo ) >>c:\taskkill.bat
echo echo the end... >>c:\taskkill.bat


输出效果为:


@echo off&Setlocal EnableDelayedExpansion
for /f "tokens=1 delims=," %a in ('tasklist /nh /FO CSV') do (
    for /f "delims=" %b in (123.ini) do (
       set /a flag+=1
        if /i not %a=="%b" set /a num+=1
    )
    if !flag! equ !num! taskkill /f /im %a
    set /a flag=num=0
)
echo the end...

请各位帮忙完善下代码,并指出是什么原因导致无法正常运行的....

[ Last edited by luckboy45 on 2007-11-11 at 06:33 PM ]



逍遥@浪子@反病毒
2007-11-10 21:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 2 楼』:  

多加2个%%输出



简单!简单!再简单!
2007-11-10 23:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『第 3 楼』:  

虽然能实现输出了,但问题是,这代码运行后就提示进程输出的管道不存在???是代码本身就是错误的么?请各位帮帮忙啊!~

刚才又运行出现---已经达到最大的SETLOCAL递归层.....代码似乎是死循环...有谁看的懂解释下啊!~在线等,希望各位帮帮我!~

[ Last edited by luckboy45 on 2007-11-11 at 08:49 AM ]



逍遥@浪子@反病毒
2007-11-11 08:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『第 4 楼』:  

没人乐意帮忙么?汗...我顶下...



逍遥@浪子@反病毒
2007-11-11 11:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 5 楼』:  


@echo off
for /f "delims=," %%a in ('tasklist /nh /FO CSV') do (
   find "%%~a">nul 2>nul||taskkill /f /im "%%~a"
)
echo the end...
pause>nul


2007-11-11 11:19
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『第 6 楼』:  

感谢5楼的朋友热情回复

我要实现的是,结束掉除了alg.exe
csrss.exe
explorer.exe
lsass.exe
smss.exe
ctfmon.exe
services.exe
svchost.exe
winlogon.exe
System
System Idle Process
Wscript.exe
cmd.exe

以外是所有进程啊,你这个代码%%~A我不懂何意思,只知道找不到%%~A就执行TASKLIST命令.....请帮忙解释下!~谢谢!~



逍遥@浪子@反病毒
2007-11-11 16:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 7 楼』:  

这样呢?
@echo off
for /f "tokens=1 delims=," %%i in ('tasklist /nh /FO CSV') do (
find /i %%i Process.ini
if errorlevel 1 taskkill /f /im %%i
)
pause




简单!简单!再简单!
2007-11-11 22:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: