Récupérer la version d'un fichier en batch
Résolu
s4e64
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
!!! -
!!! -
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.
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:
- Récupérer la version d'un fichier en batch
- Comment réduire la taille d'un fichier - Guide
- Fichier bin - Guide
- Comment ouvrir un fichier epub ? - Guide
- Dernière version ccleaner gratuit français - Télécharger - Nettoyage
- Fichier rar - Guide
3 réponses
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 ;)
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 ;)
hello
regarde cet outil Microsoft
https://docs.microsoft.com/en-us/sysinternals/downloads/listdlls?redirectedfrom=MSDN
regarde cet outil Microsoft
https://docs.microsoft.com/en-us/sysinternals/downloads/listdlls?redirectedfrom=MSDN
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! :)
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! :)
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.
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.