我们有大约200-300个程序集和exe,其中包括Binrel文件夹中的第三方程序集,我们必须对BinRel文件夹中不遵循任何命名模式的这些程序集和exe进行数字签名。我们被限制不使用CSproj文件的post build事件。 所以我们需要一个批处理或VB的脚本来读取程序集供应商,并且基于供应商,我们期望对文件进行数字签名。是否可以读取dll的供应商信息????
答案 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
输出数据出现问题,该数据包含每行末尾的附加回车。