找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 92462|回复: 18

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

[复制链接]
发表于 2014-10-9 17:04:23 | 显示全部楼层 |阅读模式
一个*号解决进程名含空格的问题~
感谢寒冰的源码。
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
复制代码
发表于 2014-10-9 17:19:46 | 显示全部楼层
  1. :Cmpexe
  2. FOR /F %%i IN (Server.ini) DO (
  3.     echo ==%1==%%i==
  4.     IF %1==%%i Goto :END
  5. )
复制代码
你先在这里观察一下它为什么没有被跳过
 楼主| 发表于 2014-10-9 17:38:19 | 显示全部楼层
回复 2# Batcher


    没有跳过,看来是开始清理重复错误操作了。
 楼主| 发表于 2014-10-9 21:57:11 | 显示全部楼层
回复 2# Batcher


    发现个问题久寻无果,就是进程中含空格应该如何处理啊?
发表于 2014-10-9 22:06:03 | 显示全部楼层
回复 4# 327025010
  1. wmic process get name /value > Exelist.txt
复制代码
 楼主| 发表于 2014-10-9 22:11:38 | 显示全部楼层
回复 5# Batcher


    进程有空格还是无法 Taskkill.exe -IM %1 -F
发表于 2014-10-9 22:21:00 | 显示全部楼层
回复 6# 327025010


    把 %1 改成 "%*" 试试
 楼主| 发表于 2014-10-9 22:27:38 | 显示全部楼层
本帖最后由 327025010 于 2014-10-9 22:33 编辑

回复 7# Batcher


    变成*Echo不显示但是 Taskkill.exe -IM %* -F 依然有空格无法完整获取,含有空格的进程名。
发表于 2014-10-9 22:32:21 | 显示全部楼层
回复 8# 327025010


    完整代码发出来看看
 楼主| 发表于 2014-10-9 22:35:09 | 显示全部楼层
回复 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
复制代码
发表于 2014-10-9 22:41:59 | 显示全部楼层
回复 10# 327025010


    我不是告诉你用wmic获取进程列表嘛。你这个代码第29行 %%i 无法获取完整的进程名。
 楼主| 发表于 2014-10-9 22:46:14 | 显示全部楼层
回复 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
复制代码
 楼主| 发表于 2014-10-9 22:57:27 | 显示全部楼层
回复 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
复制代码
发表于 2014-10-10 08:31:03 | 显示全部楼层
回复 13# 327025010


    问题不是 %* 取不到,而是 call :Cmpexe %%i 这里的 %%i 取不到。
 楼主| 发表于 2014-10-10 08:40:17 | 显示全部楼层
回复 14# Batcher


    知道原因,但是我不足以处理这个,求解决方案。由于空格出现的位置也不固定,深深的无力感。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 00:38 , Processed in 0.034117 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表