Récupérer la version d'un fichier en batch [Résolu/Fermé]

Signaler
Messages postés
3
Date d'inscription
lundi 12 avril 2010
Statut
Membre
Dernière intervention
12 avril 2010
-
 !!! -
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.

3 réponses

Messages postés
3
Date d'inscription
lundi 12 avril 2010
Statut
Membre
Dernière intervention
12 avril 2010
2
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
18242
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
13 juin 2021
5 304
Messages postés
3
Date d'inscription
lundi 12 avril 2010
Statut
Membre
Dernière intervention
12 avril 2010
2
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! :)
Messages postés
18242
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
13 juin 2021
5 304
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.
ce logiciel est génial!!