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

[文本处理] 【已解决】批处理命令For /F 取随机空格问题

  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
复制代码
==================================================
%*无法获取含空格全名求解决方案


打包
Exelist.txt 内容

映像名称                       PID 会话名              会话#       内存使用
========================= ======== ================ =========== ============
System Idle Process              0 Services                   0         24 K
System                           4 Services                   0        300 K
含空格 无法获取.exe                      432 Console                    1     25,056 K
wget.exe                      3628 Console                    1      5,192 K

Server.ini内容
wget.exe

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

TOP

  1. @echo off
  2. wmic process get name /value > exelist.txt
  3. for /f "tokens=2 delims==" %%i in ('type exelist.txt ^| findstr "="') do call :cmpexe "%%i"
  4. echo 清理完毕
  5. pause
  6. goto :eof
  7. :cmpexe
  8. for /f %%i in (server.ini) do if %*=="%%i" goto :eof
  9. echo,%*
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# Batcher


    这样和我加个*号一样啊 无法排除含空格的进程。

TOP

回复 4# 327025010


    请举例说明一下我这个代码的执行结果和你希望的结果有什么差异
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

举例:
  1. @echo off
  2. (for /f "delims=" %%a in ('more +7 "%~0"') do echo,^^\"%%a\")>$
  3. echo,Is_Not_System_Process_List:
  4. for /f delims^=^" %%a in ('tasklist /nh /fo csv^|findstr /ivg:$') do (
  5.         echo,%%a
  6. )
  7. pause & Exit/b
  8. ;;;System_Process_List;;;
  9. System Idle Process
  10. System
  11. smss.exe
  12. csrss.exe
  13. wininit.exe
  14. csrss.exe
  15. services.exe
  16. lsass.exe
  17. lsm.exe
  18. svchost.exe
  19. winlogon.exe
  20. taskhost.exe
  21. dwm.exe
  22. explorer.exe
  23. taskeng.exe
  24. conhost.exe
  25. dllhost.exe
  26. cmd.exe
  27. tasklist.exe
复制代码

TOP

回复 6# apang


    完美解决感谢!

TOP

回复 4# 327025010


明白你的问题了,那个跟%*没有任何关系,是因为第二个for循环需要写成这样:
@echo off
wmic process get name /value > exelist.txt
for /f "tokens=2 delims==" %%i in ('type exelist.txt ^| findstr "="') do call :cmpexe "%%i"
echo 清理完毕
pause
goto :eof

:cmpexe
for /f "delims=" %%i in (server.ini) do if %*=="%%i" goto :eof
echo,%*
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表