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

[其他] [已解决]批处理列出非微软签名程序

问题已经解决,感谢斑竹的帮助!

希望用wmic datafile实现,先读取LIST.TXT内容,然后再过滤检测签名,列出非微软签名项目

  for /f "delims=,  tokens=1,2,3,4,5" %%a in (
'wmic datafile where "name='%%i'" get "creation date"^, lastmodified^,manufacturer^,version /format:csv.xsl'
        set mycdate=%%b >nul
        set mymdate=%%c >nul
        set mymanu=%%d >nul
        set myver=%%e >nul
        set mycdate=!mycdate:~0,8!
        set mymdate=!mymdate:~0,8!
    )
    if not "!mymanu!"=="Microsoft Corporation " (
        echo [!PathName!] [!myver!,!mymanu!,!mycdate!,!mymdate!]
)
)
pause


LIST.TXT内容如下:


C:\\WINDOWS\\system32\\DRIVERS\\ACPI.sys            
C:\\WINDOWS\\system32\\drivers\\ACPIEC.sys         
C:\\WINDOWS\\system32\\drivers\\aec.sys            
C:\\WINDOWS\\system32\\drivers\\afd.sys            
C:\\WINDOWS\\system32\\drivers\\Alidevice.sys      
C:\\WINDOWS\\system32\\DRIVERS\\amdide.sys         
C:\\WINDOWS\\system32\\DRIVERS\\AmdK8.sys           
C:\\WINDOWS\\system32\\DRIVERS\\AmdLLD.sys         
C:\\WINDOWS\\system32\\DRIVERS\\asyncmac.sys        
C:\\WINDOWS\\system32\\DRIVERS\\atapi.sys           
C:\\WINDOWS\\system32\\DRIVERS\\atmarpc.sys         
C:\\WINDOWS\\system32\\DRIVERS\\audstub.sys         
C:\\WINDOWS\\system32\\drivers\\Beep.sys            
C:\\WINDOWS\\system32\\drivers\\Cdaudio.sys


希望各位帮忙下!过滤后的效果如下:

[C:\WINDOWS\system32\DRIVERS\audstub.sys    ] [ 0 ,1 ,20070914,20070914]
[C:\WINDOWS\system32\DRIVERS\dstub.sys    ] [ , ,20080713,20080415]

[ 本帖最后由 luckboy45 于 2009-11-21 18:42 编辑 ]
逍遥@浪子@反病毒
http://hi.baidu.com/luckboy039

回复 1楼 的帖子

你是不是想查询系统的驱动情况???

TOP

查询的是驱动,不过貌似没人能实现哈,呵呵。

我要实现的效果是过滤非微软签名的驱动

不依靠外部工具,用WMIC实现,希望各位帮忙下!~
逍遥@浪子@反病毒
http://hi.baidu.com/luckboy039

TOP

C:\\WINDOWS\\system32\\DRIVERS\\ACPI.sys            
C:\\WINDOWS\\system32\\drivers\\ACPIEC.sys         
C:\\WINDOWS\\system32\\drivers\\aec.sys            
C:\\WINDOWS\\system32\\drivers\\afd.sys            
C:\\WINDOWS\\system32\\drivers\\Alidevice.sys      
C:\\WINDOWS\\system32\\DRIVERS\\amdide.sys         
C:\\WINDOWS\\system32\\DRIVERS\\AmdK8.sys           
C:\\WINDOWS\\system32\\DRIVERS\\AmdLLD.sys         
C:\\WINDOWS\\system32\\DRIVERS\\asyncmac.sys        
C:\\WINDOWS\\system32\\DRIVERS\\atapi.sys           
C:\\WINDOWS\\system32\\DRIVERS\\atmarpc.sys         
C:\\WINDOWS\\system32\\DRIVERS\\audstub.sys         
C:\\WINDOWS\\system32\\drivers\\Beep.sys            
C:\\WINDOWS\\system32\\drivers\\Cdaudio.sys         
C:\\WINDOWS\\system32\\drivers\\Cdfs.sys            
C:\\WINDOWS\\system32\\DRIVERS\\cdrom.sys           
C:\\WINDOWS\\system32\\DRIVERS\\disk.sys            
C:\\WINDOWS\\system32\\drivers\\dmboot.sys  

LIST.TXT内容如上
我希望用FOR命令能提取出LIST.TXT的内容,并赋值给ServPath

set ServPath=%%i
for /f "tokens=2 delims==" %%a in ('wmic datafile where "Name='%ServPath%'" get Manufacturer /value') do (
  set MadeBy=%%a
)
echo.%ServPath% %MadeBy%

期待各位帮忙,我试了很多代码,都无法成功提取,都显示关闭了回显......
逍遥@浪子@反病毒
http://hi.baidu.com/luckboy039

TOP

回复 4楼 的帖子

发个给你,以前在本论坛发过,现在找不到了.....

不过速度有点慢......

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. title 系统驱动情况查询
  4. echo 初始化 ...
  5. regsvr32 %windir%\system32\wshom.ocx /s
  6. set "wmic_registry=wmic /namespace:\\root\default path stdregprov call"
  7. for /f "usebackq skip=4 tokens=3 delims= " %%a in (
  8.        `"%wmic_registry% getDWORDValue ^&H80000001,"Console","ScreenBufferSize""`
  9.        ) do (
  10.        set Default_size=%%a
  11.        set Default_size=!Default_size:~0,-1!
  12. )
  13. if not exist %temp%\Default_size.tmp echo !Default_size!>%temp%\Default_size.tmp
  14. %wmic_registry% SetDWORDValue ^&H80000001,"Console","ScreenBufferSize","19661100" >nul
  15. cls
  16. if "%1" == "h" goto :loop
  17. mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",3)(window.close)&&exit
  18. :loop
  19. cls
  20. echo.
  21. echo.
  22. echo.
  23. echo.                             系统驱动情况查询                    By:lxzzr     E-mail:lxzzr@21cn.com
  24. echo.
  25. echo.
  26. echo.                    
  27. echo.
  28. echo.
  29. set temp_m=
  30. set temp_n=
  31. set temp_l=
  32. set /p x=Please enter the filter criteria [0.State 1.Startmode x.exit]:
  33. if %x% == x (
  34.        rem Default_size:19660880
  35.        set /p Default_size=<%temp%\Default_size.tmp
  36.        %wmic_registry% SetDWORDValue ^&H80000001,"Console","ScreenBufferSize","!Default_size!" >nul
  37.        del %temp%\Default_size.tmp /q >nul 2>nul
  38.        exit
  39. )
  40. if %x% == 0 (
  41.        set name_a=State
  42.        set /p a=                                 [0.Stopped 1.Running]:
  43.        if !a! == 0 set name_b=Stopped
  44.        if !a! == 1 set name_b=Running
  45.        goto :start_
  46. )
  47. if %x% == 1 (
  48.        set name_a=startmode
  49.        set /p b=                                 [0.Auto 1.Manual 2.Disabled 3.Boot 4.System 5.unknown]:
  50.        if !b! == 0 set name_b=Auto
  51.        if !b! == 1 set name_b=Manual
  52.        if !b! == 2 set name_b=Disabled
  53.        if !b! == 3 set name_b=Boot
  54.        if !b! == 4 set name_b=System
  55.        if !b! == 5 set name_b=unknown
  56.        goto :start_
  57. )
  58. goto :loop
  59. :start_
  60. echo.
  61. echo.
  62. (
  63.        del %temp%\temp.tmp
  64.        wmic sysdriver where %name_a%='%name_b%' get name>>%temp%\temp.tmp
  65. ) >nul 2>nul
  66. for /f %%a in ("%temp%\temp.tmp") do (
  67.        if %%~za lss 10 (
  68.               echo No one.
  69.               goto :start__
  70.        )
  71. )
  72. for /f "usebackq delims=" %%a in (
  73.        `"wmic sysdriver where %name_a%='%name_b%' get name,State,startmode,pathname,ServiceType"`
  74.        ) do (
  75.        set /a temp_l+=1
  76.        if !temp_l! == 1 (
  77.               call echo.%%a    LastModified        Size      Manufacturer and Version
  78.               for /l %%i in (1,1,150) do set/p=━<nul
  79.        )
  80.        if !temp_l! gtr 1 (
  81.               for /f "tokens=1,2 delims=:." %%m in ("%%a") do (
  82.                      set temp_m=%%m
  83.                      set temp_n=%%n
  84.                      set temp_m=!temp_m:~-1!
  85.                      set driver_path_m=!temp_m!:!temp_n!.sys
  86.                      set driver_path_wmi=!driver_path_m:\=\\!
  87.                      for /f "delims=" %%o in ("!driver_path_m!") do (
  88.                              set time_=%%~to
  89.                      )
  90.                      if defined time_ (
  91.                              for /f "skip=1 usebackq delims=" %%p in (
  92.                                      `"wmic datafile where name="!driver_path_wmi!" get size,Manufacturer,Version"`
  93.                                      ) do (
  94.                                      set Manu_=%%p
  95.                              )
  96.                              ) else (
  97.                              set time_=               
  98.                              set Manu_=                 
  99.                      )
  100.                      call echo.%%a    !time_!    !Manu_!
  101.               )
  102.        )
  103. )
  104. :start__
  105. for /l %%i in (1,1,150) do set/p=━<nul
  106. echo Done,Press any key to continue.
  107. pause>nul
  108. goto :loop
复制代码
1

评分人数

TOP

回复 4楼 的帖子

这样吗?
  1. @echo off
  2. for /f "delims= " %%p in (list.txt) do wmic datafile where name="%%p" get size,Manufacturer,Version
  3. pause
复制代码
1

评分人数

TOP

返回列表