Board logo

标题: [系统相关] [已解决]筛选以后杀进程的批处理,怎么让代码执行效率更高?谢谢 [打印本页]

作者: HKE    时间: 2019-10-25 15:58     标题: [已解决]筛选以后杀进程的批处理,怎么让代码执行效率更高?谢谢

本帖最后由 HKE 于 2019-10-30 09:50 编辑

我希望做一个自动筛选以后杀除的批处理,希望大佬帮忙看一下,谢谢:handshake
  1. @echo off
  2. netstat -ano > 1.txt
  3. for /f "skip=4 tokens=5* delims= " %%i in (1.txt) do echo %%i >> 2.txt
  4. :restart
  5. type nul >>10.txt
  6. type nul >>5.txt
  7. type nul >>A.txt
  8. netstat -ano >3.txt
  9. for /f "skip=4 tokens=5* delims= " %%i in (3.txt) do echo %%i >> 4.txt
  10. for /f %%i in (4.txt) do (
  11. for /f %%e in ('findstr /iv "%%i" 2.txt') do (
  12. if %%i == %%e (type nul > nul)
  13. for /f %%s in (5.txt) do (
  14. if %%s == %%i (type nul> nul) else echo %%i >> 5.txt
  15. )
  16. )
  17. )
  18. for /f %%k in (5.txt) do (
  19. for %%j in (A.txt) do (
  20. if %%k ==%%j (type nul > nul) else taskkill /pid %%k -t -f
  21. echo %%k
  22. )
  23. )
  24. set /a k=1
  25. set /a n=0
  26. del 3.txt
  27. del 4.txt
  28. del 5.txt
  29. del 10.txt
  30. goto restart
复制代码

作者: Batcher    时间: 2019-10-25 17:10

回复 1# HKE


    你写这么多 type nul > nul 的目的是?
作者: Batcher    时间: 2019-10-25 17:11

回复 1# HKE


一个del命令可以同时删除多个文件,例如:
  1. del 3.txt 4.txt 5.txt 10.txt
复制代码

作者: HKE    时间: 2019-10-26 08:47

回复 2# Batcher
主要是用于不执行任何操作
作者: Batcher    时间: 2019-10-26 19:01

回复 4# HKE


if %%s == %%i (type nul> nul) else echo %%i >> 5.txt
直接判断“不等于”就行了吧:
if %%s neq %%i echo %%i >> 5.txt
作者: Batcher    时间: 2019-10-26 19:09

回复 1# HKE


对比两个文件差异的行,可以试试 findstr 命令,应该可以比你现在的方案更加简洁:
  1. findstr /v /x /g:4.txt 2.txt
复制代码
  1. findstr /v /x /g:2.txt 4.txt
复制代码

作者: terse    时间: 2019-10-26 23:30

大概流程 是不是如此
  1. @echo off
  2. for /f "skip=4 tokens=5* delims= " %%i in ('netstat -ano') do set  #_%%i=1
  3. :restart
  4. :::::
  5. :::::
  6. :;:::
  7. for /f "skip=4 tokens=5* delims= " %%i in ('netstat -ano') do (
  8.      if not defined #_%%i (
  9.         set "f="
  10.         for /f %%j in (a.txt) do if %%i neq %%j  set f=1
  11.         if defined f taskkill /pid %%k -t -f
  12.      )     
  13. )
  14. set /a k=1
  15. set /a n=0
  16. goto restart
复制代码

作者: HKE    时间: 2019-10-30 09:50

回复 7# terse


    感谢大牛完美的解释了我的问题!真心感谢大牛的代码,代码的逻辑顺序以及优化步骤我已经牢记在心,我会作为参考对我的代码进行修改。再次忠心感谢大牛的帮助使我的代码更加简洁且高效,谢谢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2