如何阅读汇编信息,比如供应商使用批处理脚本或vbscript?

时间:2014-09-12 11:23:50

标签: batch-file vbscript

我们有大约200-300个程序集和exe,其中包括Binrel文件夹中的第三方程序集,我们必须对BinRel文件夹中不遵循任何命名模式的这些程序集和exe进行数字签名。我们被限制不使用CSproj文件的post build事件。 所以我们需要一个批处理或VB的脚本来读取程序集供应商,并且基于供应商,我们期望对文件进行数字签名。是否可以读取dll的供应商信息????

2 个答案:

答案 0 :(得分:2)

root_dir更改为您要检查的文件夹。

@echo off

set "root_dir=C:\some_bins"

setlocal enableDelayedExpansion
for %%# in ("%root_dir%\*") do (
    set "file_path=%%~f#"

    set "file_path_q=!file_path:\=\\!"
    for /f "delims=" %%f in ('"WMIC DATAFILE WHERE name='!file_path_q!' get  Manufacturer  /format:Textvaluelist"') do (

        for /f "tokens=2 delims==" %%M in ("%%f") do (
            echo !file_path! vendor : %%M
        )
    )
)
endlocal

答案 1 :(得分:2)

note :这使用了npocmaka在答案中使用的相同来源(这次比我快),但检索过程不同

@echo off
    setlocal enableextensions disabledelayedexpansion

    rem Where to get the files
    set "binFolder=c:\windows"

    rem Retrieve input folder elements that we will use in the query
    for %%a in ("%binFolder%\") do (set "binPath=%%~pa" & set "binDrive=%%~da")

    rem Retrieve the required data from the source files
    for /f "skip=2 tokens=2,3 delims=," %%a in ('
        wmic datafile where ( 
            drive^="%binDrive%" 
            and path^="%binPath:\=\\%" 
            and extension^="dll" 
        ^) get caption^, manufacturer^, Version /format:csv
    ') do (

        echo [%%a][%%b]

    )

它只是询问wmi所需的信息,准确地指出从哪里检索它。

结果列表将有一个空行,一个标题行(此处为skip=2)和包含数据的记录。记录包括计算机名称(在以csv格式询问信息时自动包含),文件的完整路径,制造商和版本,逗号作为分隔符,用于拆分记录并检索所需的字段。

包含版本字段是为了避免wmic输出数据出现问题,该数据包含每行末尾的附加回车。