|
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
状态 离线
|
|
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 |
|
|
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 |
|