Récupérer la version d'un fichier en batch

Résolu/Fermé
s4e64 Messages postés 3 Date d'inscription lundi 12 avril 2010 Statut Membre Dernière intervention 12 avril 2010 - 12 avril 2010 à 12:56
 !!! - 22 juin 2012 à 10:13
Bonjour,
Voilà mon soucis, je cherche à récupérer la valeur de la version d'un fichier dll en batch afin d'enchainer sur des maj si nécessaire.

La version (sauf erreur de ma part) n'apparait pas dans la base de registre.

J'ai bien tenté un petit script tout simple mais celui ci ne me récupère que la date et l'heure de dernière modification :

COPY /A sqlncli.dll TOTO.BAT > NUL
pause
DIR TOTO.BAT | FIND "TOTO" > TEMP.BAT
pause
ECHO *** >> TOTO.BAT
pause
ECHO SET DATE=%%3 >> TOTO.BAT
pause
ECHO SET HEURE=%%4 >> TOTO.BAT
pause
CALL TEMP.BAT > nul
pause
DEL TOTO.BAT
DEL TEMP.BAT

Actuellement je sèche, donc si quelqu'un a une piste à me donner je suis preneur :)

Merci.
A voir également:

3 réponses

s4e64 Messages postés 3 Date d'inscription lundi 12 avril 2010 Statut Membre Dernière intervention 12 avril 2010 2
12 avril 2010 à 16:42
A tous ceux qui auront ce souci.

La solution que j'ai adopté est de créer un vbs à la volée au sein du .bat,
sqlncli.dll est le nom du fichier à checker.

------------------------------------------------------------------------------------------------
@echo off
set vbs="%temp%\filever.vbs"
set file="%systemroot%\system32\sqlncli.dll"
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 version : %filever%
------------------------------------------------------------------------------------------------



Une autre solution avec une UI est FileVer.exe.

Je vous poste aussi ma solution full vbs :

-----------------------------------------------------------------
Dim oInfo
Set oVer = WScript.GetObject("res://sqlncli.dll/16/1")
WScript.Sleep 200
oInfo = Split(oVer.body.innerHTML,Chr(01))
For i = 0 To UBound(oInfo)
'txt = txt & Ligne & i & ":" & oInfo(i) & vbcrlf
if instr(1,oinfo(i),"ProductVersion")<>0 then
txt = mid(oInfo(i),15,9)
end if
Next
WScript.Echo txt
-----------------------------------------------------------------
Notons que RES (ligne 2) fait appel à un drôle de protocole qui ne marche que sous IE (chez moi) et renvoi l'ensemble des infos en bloc dans le navigateur.

Bonne chance à tous ceux qui passe par la ;)
2
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
12 avril 2010 à 13:19
1
s4e64 Messages postés 3 Date d'inscription lundi 12 avril 2010 Statut Membre Dernière intervention 12 avril 2010 2
12 avril 2010 à 14:50
Tout d'abord merci de ta réponse rapide.
Cet outils -si je ne me plante pas- liste les dll utilisées en temps réel par les process.

De mon coté je cherche plutôt à obtenir un long listing (contenant la version) des dll dispo dans Win/syst32/. Que les dll soient en cours d'utilisation ou non.

Mais merci quand même, je ne connaissais pas cet outils! :)
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
12 avril 2010 à 16:32
celui ci peut-être : https://docs.microsoft.com/en-us/sysinternals/downloads/sigcheck?redirectedfrom=MSDN
Sigcheck v1.3
Vérifiez que les images sont numériquement signées et qu'elles vident les informations sur les versions grâce à ce simple utilitaire de ligne de commande.
0
ce logiciel est génial!!
0