不清楚你的实际文件/情况,仅以问题中的样例说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的多个文件放一起双击运行
<# :
cls&echo off&cd /d "%~dp0"&mode con lines=5000
rem 查找当前目录里指定版本号的dll和exe文件
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
set "current=%cd%"
powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal \"%~f0\"|Out-String|Invoke-Expression"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$sa=New-Object -ComObject 'Shell.Application';
$num=0;
$objfolder=$sa.NameSpace(0);
for($i=0;$i -le 400;$i++){
if($objfolder.GetDetailsOf($null, $i) -match 'File ?version|文件版本'){
$num=$i;
break;
}
}
$reg='^'+[regex]::Escape('2.0');
$current=($env:current).trimend('\');
$files=@(dir -literal $current|?{(@('.dll','.exe') -contains $_.Extension) -and ($_ -is [System.IO.FileInfo])});
for($i=0;$i -lt $files.length;$i++){
$objfolder=$sa.NameSpace($files[$i].Directory.FullName);
$objitem=$objfolder.ParseName($files[$i].Name);
$ver=$objfolder.GetDetailsOf($objitem, $num) -replace '\s','';
if($ver -match $reg){$ver+' '+$files[$i].FullName.Substring($current.length);}
}