返回列表 发帖

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

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

我希望做一个自动筛选以后杀除的批处理,希望大佬帮忙看一下,谢谢:handshake
@echo off
netstat -ano > 1.txt
for /f "skip=4 tokens=5* delims= " %%i in (1.txt) do echo %%i >> 2.txt
:restart
type nul >>10.txt
type nul >>5.txt
type nul >>A.txt
netstat -ano >3.txt
for /f "skip=4 tokens=5* delims= " %%i in (3.txt) do echo %%i >> 4.txt
for /f %%i in (4.txt) do (
for /f %%e in ('findstr /iv "%%i" 2.txt') do (
if %%i == %%e (type nul > nul)
for /f %%s in (5.txt) do (
if %%s == %%i (type nul> nul) else echo %%i >> 5.txt
)
)
)
for /f %%k in (5.txt) do (
for %%j in (A.txt) do (
if %%k ==%%j (type nul > nul) else taskkill /pid %%k -t -f
echo %%k
)
)
set /a k=1
set /a n=0
del 3.txt
del 4.txt
del 5.txt
del 10.txt
goto restartCOPY

回复 1# HKE


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

TOP

回复 1# HKE


一个del命令可以同时删除多个文件,例如:
del 3.txt 4.txt 5.txt 10.txtCOPY
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher
主要是用于不执行任何操作

TOP

回复 4# HKE


if %%s == %%i (type nul> nul) else echo %%i >> 5.txt
直接判断“不等于”就行了吧:
if %%s neq %%i echo %%i >> 5.txt
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 1# HKE


对比两个文件差异的行,可以试试 findstr 命令,应该可以比你现在的方案更加简洁:
findstr /v /x /g:4.txt 2.txtCOPY
findstr /v /x /g:2.txt 4.txtCOPY
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

大概流程 是不是如此
@echo off
for /f "skip=4 tokens=5* delims= " %%i in ('netstat -ano') do set  #_%%i=1
:restart
:::::
:::::
:;:::
for /f "skip=4 tokens=5* delims= " %%i in ('netstat -ano') do (
     if not defined #_%%i (
        set "f="
        for /f %%j in (a.txt) do if %%i neq %%j  set f=1
        if defined f taskkill /pid %%k -t -f
     )     
)
set /a k=1
set /a n=0
goto restartCOPY
1

评分人数

    • HKE: 感谢分享技术 + 1

TOP

回复 7# terse


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

TOP

返回列表