Detectar um número de versão DLL usando um script
Pergunta
Eu gostaria de escrever um script que pode recursivamente digitalizar os DLLs em um diretório e gerar um relatório de todos os seus números de versão.
Como posso detectar o número da versão de uma DLL usando um script? soluções VBScript são preferidos, a menos que haja uma maneira melhor.
Solução
Você pode usar o objeto FileSystemObject
para acessar o sistema de arquivos e sua GetFileVersion
método para obter as informações de versão do arquivo.
Você pediu um exemplo VBScript, por isso aqui você são:
Dim oFSO : Set oFSO = CreateObject("Scripting.FileSystemObject")
PrintDLLVersions oFSO.GetFolder(WScript.Arguments.Item(0))
Sub PrintDLLVersions(Folder)
Dim oFile, oSubFolder
' Scan the DLLs in the Folder
For Each oFile In Folder.Files
If UCase(oFSO.GetExtensionName(oFile)) = "DLL" Then
WScript.Echo oFile.Path & vbTab & oFSO.GetFileVersion(oFile)
End If
Next
' Scan the Folder's subfolders
For Each oSubFolder In Folder.SubFolders
PrintDLLVersions oSubFolder
Next
End Sub
Uso:
> cscript //nologo script-file.vbs folder > out-file
por exemplo:.
> cscript //nologo dll-list.vbs C:\Dir > dll-list.txt
Exemplo de saída:
C:\Dir\foo.dll 1.0.0.1 C:\Dir\bar.dll 1.1.0.0 C:\Dir\SubDir\foobar.dll 4.2.0.0 ...
Outras dicas
Editar Eu acho que este é a fonte I referenciada
Este é o script que eu uso, eu peço desculpas, mas eu não me lembro de onde. (Então, leitor, se este começou como seu script passo por favor, para a frente) Ele usa o FileSystemObject que pode obter a versão diretamente.
@echo off
setlocal
set vbs="%temp%\filever.vbs"
set file=%1
echo Set oFSO = CreateObject("Scripting.FileSystemObject") >%vbs%
echo WScript.Echo oFSO.GetFileVersion(WScript.Arguments.Item(0)) >>%vbs%
for /f "tokens=*" %%a in (
'cscript.exe //Nologo %vbs% %file%') do set filever=%%a
del %vbs%
echo Full file version of %file% is: %filever%
for /f "tokens=2 delims=. " %%a in ("%filever%") do set secondparam=%%a
set splevel=%secondparam:~0,1%
echo SP level is: %splevel%
endlocal
pause