2009-09-14 6 views
2

Je voudrais écrire un script qui peut analyser de manière récursive les DLL dans un répertoire et générer un rapport de tous leurs numéros de version. Comment puis-je détecter le numéro de version d'une DLL à l'aide d'un script? Les solutions VBScript sont préférées, à moins qu'il y ait une meilleure solution.Détection d'un numéro de version de DLL à l'aide d'un script

+0

Si vous voulez le faire en VB6. Regarde ça. A travaillé 100% pour moi: http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=4976&lngWId=1 – Koekiebox

+0

Vous pourriez regarder PowerShell. – TrueWill

+0

Ajout de la balise 'vbscript'. – Helen

Répondre

4

Vous pouvez utiliser l'objet FileSystemObject pour accéder au système de fichiers et sa méthode GetFileVersion pour obtenir les informations de version de fichier.

Vous avez demandé un exemple VBScript, donc vous êtes ici:

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 

Utilisation:

> cscript //nologo script-file.vbsfolder >out-file

par exemple .:

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

Exemple de sortie:

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

EDIT Je pense que this est la source dont j'ai parlé

Voici le script que je l'utilise, je présente mes excuses, mais je ne me souviens pas d'où. (Ainsi, lecteur, si cela a commencé comme votre script s'il vous plaît étape) Il utilise le FileSystemObject qui peut obtenir la version directement.

@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 
Questions connexes