标题: [系统相关] 【已解决】批处理清理进程,进程名含空格已解决。 [打印本页]
作者: 327025010 时间: 2014-10-9 17:04 标题: 【已解决】批处理清理进程,进程名含空格已解决。
一个*号解决进程名含空格的问题~
感谢寒冰的源码。
http://blog.163.com/tgk_522351/blog/static/8499772009914114413/
为了防止误杀系统进程,需要的请先注销后Tasklist>A.TXT获取进程,以免误杀系统进程。- @Echo off
- :Main
- cls
- REM 系统进程
- Echo.audiodg.exe>>Server.ini
- Echo.cmd.exe>>Server.ini
- Echo.conhost.exe>>Server.ini
- Echo.csrss.exe>>Server.ini
- Echo.dllhost.exe>>Server.ini
- Echo.dwm.exe>>Server.ini
- Echo.explorer.exe>>Server.ini
- Echo.lsass.exe>>Server.ini
- Echo.lsm.exe>>Server.ini
- Echo.MacTray.exe>>Server.ini
- Echo.services.exe>>Server.ini
- Echo.smss.exe>>Server.ini
- Echo.svchost.exe>>Server.ini
- Echo.taskhost.exe>>Server.ini
- Echo.tasklist.exe>>Server.ini
- Echo.wininit.exe>>Server.ini
- Echo.winlogon.exe>>Server.ini
- Echo.WmiPrvSE.exe>>Server.ini
-
- Tasklist.exe>Exelist.txt
-
- FOR /F "skip=5" %%i in (Exelist.txt) do call :Cmpexe %%i
-
- DEL /F /S /Q Server.ini >Nul 2>Nul
- DEL /F /S /Q Exelist.txt >Nul 2>Nul
-
- Echo. & Echo.结束,任意键再次执行。 & Pause >Nul & Goto Main
-
- :Cmpexe
-
- FOR /F %%i IN (Server.ini) DO IF %*==%%i Goto :END
- REM Echo. & Echo.任意键清理 %*
- REM Pause >Nul
- Taskkill.exe -IM %** -F
-
- :END
复制代码
作者: Batcher 时间: 2014-10-9 17:19
- :Cmpexe
- FOR /F %%i IN (Server.ini) DO (
- echo ==%1==%%i==
- IF %1==%%i Goto :END
- )
复制代码
你先在这里观察一下它为什么没有被跳过
作者: 327025010 时间: 2014-10-9 17:38
回复 2# Batcher
没有跳过,看来是开始清理重复错误操作了。
作者: 327025010 时间: 2014-10-9 21:57
回复 2# Batcher
发现个问题久寻无果,就是进程中含空格应该如何处理啊?
作者: Batcher 时间: 2014-10-9 22:06
回复 4# 327025010 - wmic process get name /value > Exelist.txt
复制代码
作者: 327025010 时间: 2014-10-9 22:11
回复 5# Batcher
进程有空格还是无法 Taskkill.exe -IM %1 -F
作者: Batcher 时间: 2014-10-9 22:21
回复 6# 327025010
把 %1 改成 "%*" 试试
作者: 327025010 时间: 2014-10-9 22:27
本帖最后由 327025010 于 2014-10-9 22:33 编辑
回复 7# Batcher
变成*Echo不显示但是 Taskkill.exe -IM %* -F 依然有空格无法完整获取,含有空格的进程名。
作者: Batcher 时间: 2014-10-9 22:32
回复 8# 327025010
完整代码发出来看看
作者: 327025010 时间: 2014-10-9 22:35
回复 9# Batcher - @Echo off
- :Main
- cls
- Echo.进程名含 空格.exe>>Server.ini
-
-
- REM 系统进程
- Echo.audiodg.exe>>Server.ini
- Echo.cmd.exe>>Server.ini
- Echo.conhost.exe>>Server.ini
- Echo.csrss.exe>>Server.ini
- Echo.dllhost.exe>>Server.ini
- Echo.dwm.exe>>Server.ini
- Echo.explorer.exe>>Server.ini
- Echo.lsass.exe>>Server.ini
- Echo.lsm.exe>>Server.ini
- Echo.MacTray.exe>>Server.ini
- Echo.services.exe>>Server.ini
- Echo.smss.exe>>Server.ini
- Echo.svchost.exe>>Server.ini
- Echo.taskhost.exe>>Server.ini
- Echo.tasklist.exe>>Server.ini
- Echo.wininit.exe>>Server.ini
- Echo.winlogon.exe>>Server.ini
- Echo.WmiPrvSE.exe>>Server.ini
-
- Tasklist.exe>Exelist.txt
-
- FOR /F "skip=5" %%i in (Exelist.txt) do call :Cmpexe %%i
-
- DEL /F /S /Q Server.ini>nul
- DEL /F /S /Q Exelist.txt>nul
-
- Echo. & Echo.清理进程完毕 !任意再次清理。
- Pause >Nul & Goto Main
-
- :Cmpexe
- FOR /F %%i IN (Server.ini) DO IF %*==%%i Goto :END
- Del /S /Q "%Temp%\A.TXT" >Nul 2>Nul
- Echo.%*>%Temp%\A.TXT
- Start "" "%Temp%\A.TXT" >Nul 2>Nul
- Pause
- REM wmic process get name /value > Exelist.txt
- REM Taskkill.exe -IM %* -F
-
- REM :Cmpexe
- REM FOR /F %%i IN (Server.ini) DO (
- REM echo. %* %%i
- REM IF %*==%%i Goto :END
- REM )
-
- :END
复制代码
作者: Batcher 时间: 2014-10-9 22:41
回复 10# 327025010
我不是告诉你用wmic获取进程列表嘛。你这个代码第29行 %%i 无法获取完整的进程名。
作者: 327025010 时间: 2014-10-9 22:46
回复 11# Batcher
Tasklist.exe>Exelist.txt 也能获取到那个含空格的进程名啊,是最后一个%*无法获取含空格的进程名啊。- FOR /F %%i IN (Server.ini) DO IF %*==%%i Goto :END
- Del /S /Q "%Temp%\A.TXT" >Nul 2>Nul
- Echo.%*>%Temp%\A.TXT
- Start "" "%Temp%\A.TXT" >Nul 2>Nul
复制代码
作者: 327025010 时间: 2014-10-9 22:57
回复 11# Batcher
我把生成文件给你把,问题现在是%*不能获取到那个含空格的”Rolan - 副本.exe“完整文件名
久寻无果,伸手了- @echo off
- FOR /F "skip=5" %%i in (Exelist.txt) do call :Cmpexe %%i
- Echo.清理完毕
- Pause
-
- :Cmpexe
- FOR /F %%i IN (Server.ini) DO IF %*==%%i Goto :END
- Echo.%*
- :END
复制代码
作者: Batcher 时间: 2014-10-10 08:31
回复 13# 327025010
问题不是 %* 取不到,而是 call :Cmpexe %%i 这里的 %%i 取不到。
作者: 327025010 时间: 2014-10-10 08:40
回复 14# Batcher
知道原因,但是我不足以处理这个,求解决方案。由于空格出现的位置也不固定,深深的无力感。
作者: Batcher 时间: 2014-10-10 10:39
这种方法不是很严谨,假如我希望保留 "a b.exe" 并且杀掉 "a c.exe",它就会误杀。
作者: 327025010 时间: 2014-10-10 10:54
回复 16# Batcher
我也只能想到这里了,还有就是对比后结束 PID 还没想到如何执行。。。
作者: ygqiang 时间: 2014-10-11 08:35
这代码,是xp系统还是win7系统下运行的?
作者: 327025010 时间: 2014-10-11 09:23
回复 18# ygqiang
应该都行需要处理含空格进程apang完美解决。
http://www.bathome.net/thread-32404-1-1.html
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |