Pregunta

Me gustaría escribir un script que pueda escanear recursivamente las DLL en un directorio y generar un informe de todos sus números de versión.

¿Cómo puedo detectar el número de versión de una DLL usando un script? Se prefieren las soluciones VBScript, a menos que haya una mejor manera.

¿Fue útil?

Solución

Puede usar el FileSystemObject objeto para acceder al sistema de archivos y su GetFileVersion método para obtener la información de la versión del archivo.

Usted solicitó un ejemplo de VBScript, así que aquí está:

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 ejemplo:

> cscript //nologo dll-list.vbs C:\Dir > dll-list.txt

Salida de muestra:

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
...

Otros consejos

EDITAR Creo que esta es la fuente a la que hice referencia

Este es el guión que uso, pido disculpas, pero no recuerdo de dónde. (Entonces, lector, si esto comenzó como su script, avance) Utiliza el FileSystemObject que puede obtener la versión directamente.

@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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top