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

回复 15# aloha20200628

感谢你的热心回复!

因为我电脑没有安装PS,且我有4台电脑均是XP系统,有专业版、家庭版、精简版,我写的程序需要适用于不同版本的系统,故我的操作思路是
@echo off
For /f "skip=1 delims=" %%a in ('WMIC Process WHERE "handle!=0 AND handle!=4" GET ExecutablePath^|more') do (
        For /f "tokens=2 delims=/" %%b in ('WMIC Path  Win32_PerfFormattedData_PerfProc_FullImage_Costly where "name like "%%~na%%"" GET Name') do echo %%b>>2.txt
)
goto :eof


2.txt   的内容生成如下:
C:\WINDOWS\system32\ntdll.dll  

C:\WINDOWS\system32\csrss.exe     

C:\WINDOWS\system32\ntdll.dll     

C:\WINDOWS\system32\CSRSRV.dll   

C:\WINDOWS\system32\basesrv.dll   

C:\WINDOWS\system32\winsrv.dll   

C:\WINDOWS\system32\GDI32.dll     

C:\WINDOWS\system32\KERNEL32.dll  

C:\WINDOWS\system32\USER32.dll   

C:\WINDOWS\system32\LPK.DLL      

C:\WINDOWS\system32\USP10.dll     

C:\WINDOWS\system32\ADVAPI32.dll  

C:\WINDOWS\system32\RPCRT4.dll   

C:\WINDOWS\system32\Secur32.dll   

C:\WINDOWS\system32\sxs.dll      

C:\WINDOWS\system32\winlogon.exe                                                                                   

C:\WINDOWS\system32\ntdll.dll                                                                                      

C:\WINDOWS\system32\kernel32.dll                                                                                   

C:\WINDOWS\system32\ADVAPI32.dll                                                                                   

C:\WINDOWS\system32\RPCRT4.dll                                                                                    

C:\WINDOWS\system32\Secur32.dll                                                                                    

C:\WINDOWS\system32\AUTHZ.dll                                                                                      

C:\WINDOWS\system32\msvcrt.dll                                                                                    

C:\WINDOWS\system32\CRYPT32.dll                                                                                    

C:\WINDOWS\system32\MSASN1.dll                                                                                    

C:\WINDOWS\system32\USER32.dll                                                                                    

C:\WINDOWS\system32\GDI32.dll                                                                                      

C:\WINDOWS\system32\NDdeApi.dll                                                                                    

C:\WINDOWS\system32\PROFMAP.dll                                                                                    

C:\WINDOWS\system32\NETAPI32.dll                                                                                   

C:\WINDOWS\system32\USERENV.dll                                                                                    

C:\WINDOWS\system32\PSAPI.DLL  

如何过滤重复行???代码最好不依赖外部工具,我尝试用下面代码过滤重复行,但效果不佳,请问怎么解决?

for /f "delims=" %%i in (2.txt) do (if not defined %%i set %%i=s & echo %%i>>b.txt)

接着再用wmic datafile where "name='!a:\=\\!'" get manufacturer /value
来判断过滤掉微软签名的,最终过滤出可疑DLL。
逍遥@浪子@反病毒
http://hi.baidu.com/luckboy039

TOP

回复 16# luckboy45


"效果不佳"的意思是代码得到了正确的结果但是速度太慢?还是代码得到了错误的结果?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 aloha20200628 于 2024-11-3 11:13 编辑

回复 16# luckboy45

以下去重的代码针对16楼的示例文件 2.txt(数据行均为全路径文件名),第2行代码专为删除 2.txt 中的空行和行尾空格...
  1. @echo off &setlocal enabledelayedexpansion
  2. (for /f "tokens=* delims= " %%a in (2.txt) do echo,%%~dpnxa)>0.0
  3. (for /f "delims=" %%a in ('sort 0.0') do (
  4.    if /i "%%a" neq "!a!" if "!a!" neq "" echo,!a!)&set "b=!a!"&set "a=%%a")>2.new.txt
  5. if /i "!b!" neq "!a!" echo,!a!>>2.new.txt
  6. del/q "0.0"&endlocal&pause&exit/b
复制代码
以下代码未用 sort.exe 完成,但仍须第2行代码专为删除 2.txt 中的空行和行尾空格...
  1. @echo off &setlocal enabledelayedexpansion
  2. (for /f "tokens=* delims= " %%a in (2.txt) do echo,%%~dpnxa)>0.0
  3. (for /f "delims=" %%a in (0.0) do if not defined _%%a set "_%%a=1"&echo,%%a)>2.new.txt
  4. del/q "0.0"&endlocal&pause&exit/b
复制代码

TOP

回复 17# Batcher

我指的效果不佳是,因为我上面代码生成的2.TXT内每行末尾都有空格符号,而且有些下面有空行,内容如下,节选部分
  1. C:\WINDOWS\system32\cryptdll.dll                                                                                             
  2. C:\WINDOWS\system32\sensapi.dll                                                                                               
  3. C:\WINDOWS\system32\DNSAPI.dll                                                                                                
  4. C:\Program Files\Bonjour\mdnsNSP.dll                                                                                          
  5. C:\WINDOWS\system32\rasadhlp.dll                                                                                             
  6. C:\WINDOWS\system32\rsaenh.dll                                                                                                
  7. D:\常用工具\UnLocker185\UnlockerCOM.dll                                                                                       
  8. C:\WINDOWS\system32\syncui.dll                                                                                                
  9. C:\Program Files\Common Files\Autodesk Shared\dwf Common\DWFShellExtension.dll                                                
  10. C:\Program Files\Common Files\Autodesk Shared\dwf Common\MSVCP71.dll                                                         
  11. C:\Program Files\Common Files\Autodesk Shared\dwf Common\MSVCR71.dll                                                         
  12. C:\WINDOWS\system32\MSISIP.DLL                                                                                                
  13. C:\WINDOWS\system32\wshext.dll   
  14.                                                                                              
  15. C:\WINDOWS\system32\ntdll.dll  
  16. C:\WINDOWS\system32\csrss.exe     
  17. C:\WINDOWS\system32\ntdll.dll     
  18. C:\WINDOWS\system32\CSRSRV.dll   
  19. C:\WINDOWS\system32\basesrv.dll   
  20. C:\WINDOWS\system32\winsrv.dll   
  21. C:\WINDOWS\system32\GDI32.dll     
  22. C:\WINDOWS\system32\KERNEL32.dll  
  23. C:\WINDOWS\system32\USER32.dll   
  24. C:\WINDOWS\system32\LPK.DLL      
  25. C:\WINDOWS\system32\USP10.dll     
  26. C:\WINDOWS\system32\ADVAPI32.dll  
  27. C:\WINDOWS\system32\RPCRT4.dll   
  28. C:\WINDOWS\system32\Secur32.dll   
  29. C:\WINDOWS\system32\sxs.dll      
  30. C:\WINDOWS\system32\winlogon.exe                                                                                   
  31. C:\WINDOWS\system32\ntdll.dll                                                                                      
  32. C:\WINDOWS\system32\kernel32.dll                                                                                   
  33. C:\WINDOWS\system32\ADVAPI32.dll                                                                                   
  34. C:\WINDOWS\system32\RPCRT4.dll                                                                                    
  35. C:\WINDOWS\system32\Secur32.dll                                                                                    
  36. C:\WINDOWS\system32\AUTHZ.dll        
  37. C:\WINDOWS\system32\svchost.exe                                                                                    
  38. C:\WINDOWS\system32\ntdll.dll      
  39. C:\Documents and Settings\All Users\Application Data\Thunder Network\KanKan\Pusher\xappdrv.1.0.0.87.dll                                                                           
  40. C:\WINDOWS\system32\kernel32.dll                                                                                   
  41. C:\WINDOWS\system32\ADVAPI32.dll                                                                                   
复制代码
我需要过滤掉重复的行,因为那会影响到后续代码执行效率。
逍遥@浪子@反病毒
http://hi.baidu.com/luckboy039

TOP

本帖最后由 luckboy45 于 2024-11-3 08:27 编辑

回复 18# aloha20200628

感谢你热情的帮助,测试了18楼代码,使用sort的那段,无法过滤干净,效果如下,很多重复的没有被过滤,大概是因为大小写的缘故。

C:\Documents
C:\Program
C:\WINDOWS\AppPatch\AcAdProc.dll
C:\WINDOWS\AppPatch\AcGenral.dll
C:\WINDOWS\explorer.exe
c:\WINDOWS\pchealth\helpctr\binaries\pchsvc.dll
C:\WINDOWS\system32\AcSignIcon.dll
c:\WINDOWS\system32\activeds.dll
C:\WINDOWS\system32\activeds.dll
c:\WINDOWS\system32\activeds.dll
C:\WINDOWS\system32\activeds.dll
c:\WINDOWS\system32\activeds.dll
C:\WINDOWS\system32\activeds.dll
c:\WINDOWS\system32\activeds.dll
C:\WINDOWS\system32\activeds.dll
c:\WINDOWS\system32\activeds.dll
C:\WINDOWS\system32\activeds.dll
C:\WINDOWS\system32\actxprxy.dll
C:\WINDOWS\system32\adsldpc.dll
c:\WINDOWS\system32\adsldpc.dll
C:\WINDOWS\system32\adsldpc.dll
c:\WINDOWS\system32\adsldpc.dll


而使用第二段代码,过滤的是干净了,但把
C:\Program Files\Bonjour\mdnsNSP.dll

C:\Program Files\Common Files\Autodesk Shared\dwf Common\DWFShellExtension.dll                                                

C:\Program Files\Common Files\Autodesk Shared\dwf Common\MSVCP71.dll                                                         

C:\Program Files\Common Files\Autodesk Shared\dwf Common\MSVCR71.dll
C:\Documents and Settings\All Users\Application Data\Thunder Network\KanKan\Pusher\xappdrv.1.0.0.87.dll


经过过滤后变成了
C:\Program
C:\Documents

其实应该是过滤掉空行和行尾的空格即可,麻烦再帮完善下,谢谢!~
逍遥@浪子@反病毒
http://hi.baidu.com/luckboy039

TOP

回复 20# luckboy45

18代码已被订正,用19楼节选示例测试已通过...

TOP

返回列表