[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 【已解决】批处理清理进程,进程名含空格已解决。

一个*号解决进程名含空格的问题~
感谢寒冰的源码。
http://blog.163.com/tgk_522351/blog/static/8499772009914114413/


为了防止误杀系统进程,需要的请先注销后Tasklist>A.TXT获取进程,以免误杀系统进程。
  1. @Echo off
  2. :Main
  3. cls
  4. REM 系统进程
  5. Echo.audiodg.exe>>Server.ini
  6. Echo.cmd.exe>>Server.ini
  7. Echo.conhost.exe>>Server.ini
  8. Echo.csrss.exe>>Server.ini
  9. Echo.dllhost.exe>>Server.ini
  10. Echo.dwm.exe>>Server.ini
  11. Echo.explorer.exe>>Server.ini
  12. Echo.lsass.exe>>Server.ini
  13. Echo.lsm.exe>>Server.ini
  14. Echo.MacTray.exe>>Server.ini
  15. Echo.services.exe>>Server.ini
  16. Echo.smss.exe>>Server.ini
  17. Echo.svchost.exe>>Server.ini
  18. Echo.taskhost.exe>>Server.ini
  19. Echo.tasklist.exe>>Server.ini
  20. Echo.wininit.exe>>Server.ini
  21. Echo.winlogon.exe>>Server.ini
  22. Echo.WmiPrvSE.exe>>Server.ini
  23. Tasklist.exe>Exelist.txt
  24. FOR /F "skip=5" %%i in (Exelist.txt) do call :Cmpexe %%i
  25. DEL /F /S /Q Server.ini >Nul 2>Nul
  26. DEL /F /S /Q Exelist.txt >Nul 2>Nul
  27. Echo. & Echo.结束,任意键再次执行。 & Pause >Nul & Goto Main
  28. :Cmpexe
  29. FOR /F %%i IN (Server.ini) DO IF %*==%%i Goto :END
  30. REM Echo. & Echo.任意键清理 %*
  31. REM Pause >Nul
  32. Taskkill.exe -IM %** -F
  33. :END
复制代码

回复 18# ygqiang

应该都行需要处理含空格进程apang完美解决。
    http://www.bathome.net/thread-32404-1-1.html

TOP

一个*号解决进程名含空格的问题~
感谢寒冰的源码。
http://blog.163.com/tgk_522351/blog/stat ...
327025010 发表于 2014-10-9 17:04



    这代码,是xp系统还是win7系统下运行的?

TOP

回复 16# Batcher


    我也只能想到这里了,还有就是对比后结束 PID 还没想到如何执行。。。

TOP

一个*号解决进程名含空格的问题

这种方法不是很严谨,假如我希望保留 "a b.exe" 并且杀掉 "a c.exe",它就会误杀。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 14# Batcher


    知道原因,但是我不足以处理这个,求解决方案。由于空格出现的位置也不固定,深深的无力感。

TOP

回复 13# 327025010


    问题不是 %* 取不到,而是 call :Cmpexe %%i 这里的 %%i 取不到。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 11# Batcher


    我把生成文件给你把,问题现在是%*不能获取到那个含空格的”Rolan - 副本.exe“完整文件名

久寻无果,伸手了
  1. @echo off
  2. FOR /F "skip=5" %%i in (Exelist.txt) do call :Cmpexe %%i
  3. Echo.清理完毕
  4. Pause
  5. :Cmpexe
  6. FOR /F %%i IN (Server.ini) DO IF %*==%%i Goto :END
  7. Echo.%*
  8. :END
复制代码

TOP

回复 11# Batcher


    Tasklist.exe>Exelist.txt 也能获取到那个含空格的进程名啊,是最后一个%*无法获取含空格的进程名啊。
  1. FOR /F %%i IN (Server.ini) DO IF %*==%%i Goto :END
  2. Del /S /Q "%Temp%\A.TXT" >Nul 2>Nul
  3. Echo.%*>%Temp%\A.TXT
  4. Start "" "%Temp%\A.TXT" >Nul 2>Nul
复制代码

TOP

回复 10# 327025010


    我不是告诉你用wmic获取进程列表嘛。你这个代码第29行 %%i 无法获取完整的进程名。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 9# Batcher
  1. @Echo off
  2. :Main
  3. cls
  4. Echo.进程名含 空格.exe>>Server.ini
  5. REM 系统进程
  6. Echo.audiodg.exe>>Server.ini
  7. Echo.cmd.exe>>Server.ini
  8. Echo.conhost.exe>>Server.ini
  9. Echo.csrss.exe>>Server.ini
  10. Echo.dllhost.exe>>Server.ini
  11. Echo.dwm.exe>>Server.ini
  12. Echo.explorer.exe>>Server.ini
  13. Echo.lsass.exe>>Server.ini
  14. Echo.lsm.exe>>Server.ini
  15. Echo.MacTray.exe>>Server.ini
  16. Echo.services.exe>>Server.ini
  17. Echo.smss.exe>>Server.ini
  18. Echo.svchost.exe>>Server.ini
  19. Echo.taskhost.exe>>Server.ini
  20. Echo.tasklist.exe>>Server.ini
  21. Echo.wininit.exe>>Server.ini
  22. Echo.winlogon.exe>>Server.ini
  23. Echo.WmiPrvSE.exe>>Server.ini
  24. Tasklist.exe>Exelist.txt
  25. FOR /F "skip=5" %%i in (Exelist.txt) do call :Cmpexe %%i
  26. DEL /F /S /Q Server.ini>nul
  27. DEL /F /S /Q Exelist.txt>nul
  28. Echo. & Echo.清理进程完毕 !任意再次清理。
  29. Pause >Nul & Goto Main
  30. :Cmpexe
  31. FOR /F %%i IN (Server.ini) DO IF %*==%%i Goto :END
  32. Del /S /Q "%Temp%\A.TXT" >Nul 2>Nul
  33. Echo.%*>%Temp%\A.TXT
  34. Start "" "%Temp%\A.TXT" >Nul 2>Nul
  35. Pause
  36. REM wmic process get name /value > Exelist.txt
  37. REM Taskkill.exe -IM %* -F
  38. REM :Cmpexe
  39. REM FOR /F %%i IN (Server.ini) DO (
  40.     REM echo. %* %%i
  41.     REM IF %*==%%i Goto :END
  42. REM )
  43. :END
复制代码

TOP

回复 8# 327025010


    完整代码发出来看看
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 327025010 于 2014-10-9 22:33 编辑

回复 7# Batcher


    变成*Echo不显示但是 Taskkill.exe -IM %* -F 依然有空格无法完整获取,含有空格的进程名。

TOP

回复 6# 327025010


    把 %1 改成 "%*" 试试
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# Batcher


    进程有空格还是无法 Taskkill.exe -IM %1 -F

TOP

返回列表