IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Récupérer la version d'un .exe dans une variable numérique [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Septembre 2017
    Messages : 3
    Par défaut Récupérer la version d'un .exe dans une variable numérique
    Bonjour à tous,

    Je cherche depuis quelques semaines maintenant comment récupérer la version de mon .exe pour nommer le dossier dans lequel je vais le copier.
    Mon objectif est de récupérer les publications nouvelles dans ma boîte de dév' et de les copier automatiquement avec un .bat dans un répertoire standardisé "S:\Programmes\[NOM_DU_PROGRAMME]-[VERSION_DU_PROGRAMME]".

    La copie fonctionne bien.

    J'arrive avec WMIC à obtenir l'info suivante :
    Mais je ne peux pas nommer mon dossier ainsi, je dois récupérer l'info "3.17.2.4".

    L'un de vous a-t-il le code magique ou l'indice pour m'aider à trouver ?
    Je tourne beaucoup avec les "for /f "tokens=1"..." etc mais sans réussite (et sans bien comprendre comment cette fonction marche).

    Un grand merci d'avance,

    Snipe

  2. #2
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut
    Pouvez-vous nous poster le code batch en question ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Septembre 2017
    Messages : 3
    Par défaut
    Salut!

    Bien sûr :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @echo off
    Title Copie du dossier \bin\debug de Visual Studio vers le dossier de Validation
    
    WMIC DATAFILE WHERE name="C:\\TFS\\DVT\\Bin\\Debug\\NOTREPROGRAMME.exe" get Version /format:Textvaluelist
    
    
    mkdir "\\Validation\NOTREPROGRAMME" 
    xcopy "C:\TFS\DVT\bin\Debug\Backup.dll" "\\Validation\NOTREPROGRAMME\"
    Sachant que le WMIC au milieu ne me sert encore à rien...



    EDIT : à moins que la question ne concerne ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @echo off
    FOR /F "tokens=2 delims==" %%I IN (
      'wmic datafile where "name='C:\\TFS\\DVT\\Bin\\Debug\\NOTREPROGRAMME.exe'" get version /format:list'
    ) DO SET "RESULT=%%I"
    ECHO %RESULT%

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Septembre 2017
    Messages : 3
    Par défaut
    Et bien voilà il suffisait de poser la question pour conclure ^^

    Pour ceux qui chercheraient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo off
    Title Copie du dossier \bin\debug de Visual Studio vers le dossier de Validation
    
    FOR /F "tokens=2 delims==" %%I IN (
      'wmic datafile where "name='C:\\TFS\\DVT\\bin\\Debug\\NOTREPROGRAMME.exe'" get version /format:list'
    ) DO SET "RESULT=%%I"
    ECHO %RESULT%
    
    
    
    
    mkdir "\\Validation\NOTREPROGRAMME-%RESULT%\Backup" 
    xcopy "C:\TFS\DVT\bin\Debug\*.*" "\\Validation\NOTREPROGRAMME-%RESULT%\"

  5. #5
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    Voici une subroutine qu'on peut l'utilisé dans vos batch pour détreminer la version d'un fichier :GetVersion <ApplicationPath> <Version>

    Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    @echo off
    Mode 80,5 & color 9E
    Title Get Version of any Program using WMIC by Hackoo
    Set "Application=C:\Program Files\Internet Explorer\iexplore.exe"
    Rem Cette boucle for sert à extraire le nom du programme à partir de son chemin complet
    for %%i in (%Application%) do set "AppName=%%~nxi"
    Rem Ici en appelle la subroutine :Add_backSlash pour ajouter un anti-slash dans 
    Rem le chemin complet de l'application qu'on va l'injecter dans la subroutine 
    Rem :GetVersion <ApplicationPath> <Version>
    Call :Add_backSlash "%Application%"
    Rem Donc après ce call normalement la variable Application
    Rem devient C:\\Program Files\\Internet Explorer\\iexplore.exe
    echo(
    echo Full path : %Application%
    echo(
    Rem Ici on appelle notre subroutine pour definir notre variable Version
    rem avec son contenu
    Call :GetVersion %Application% Version
    echo La version de "%AppName%" est : %Version%
    Timeout /T 15 /nobreak>nul & Exit
    ::*******************************************************************
    :GetVersion <ApplicationPath> <Version>
    Rem le paramètre %~1 represente le chemin complet de l'application
    Rem sans les doubles quotes
    Rem le paramètre %2 représente la variable qu'on va définir 
    Rem (dans notre cas %2=Version)
    FOR /F "tokens=2 delims==" %%I IN (
      'wmic datafile where "name='%~1'" get version /format:Textvaluelist'
    ) DO FOR /F "delims=" %%A IN ("%%I") DO SET "%2=%%A"
    Exit /b
    ::*******************************************************************
    :Add_backSlash <String>
    Rem Subroutine pour remplaçer le "\" par un double "\\" dans un String
    Set "Application=%1"
    Set "String=\"
    Set "NewString=\\"
    Call Set "Application=%%Application:%String%=%NewString%%%"
    Exit /b
    ::*******************************************************************

  6. #6
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    Voici une autre version plus élaborée
    Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    @echo off
    Mode 75,3 & color 9E
    Title Get File Version of any Program from file list using WMIC by Hackoo
    Set "RootFolder=%ProgramFiles%\Skype"
    @for %%a in (%RootFolder%) do set "FolderName=%%~na"
    Set "File_Version_List=%~dp0%FolderName%_File_Version_List.txt"
    Set "ErrorFile=%~dp0%FolderName%_Error.txt
    Set Extensions="*.exe" "*.dll"
    If exist "%ErrorFile%" Del "%ErrorFile%"
    If exist "%File_Version_List%" Del "%File_Version_List%"
    echo(
    echo          Please wait a while ... Process to get file version ...
    setlocal enabledelayedexpansion
    CD /D "%RootFolder%"
    @for /f "delims=" %%F in ('Dir /b /s %Extensions%') do (
        set "Version="
        Call :Get_AppName "%%F" AppName
        Call :Add_backSlash "%%F"
        Call :GetVersion !Application! Version
        Call :Remove_backSlash !Application!
        If defined Version (
            (
                echo !Application!
                echo !AppName! ==^> !Version!
                echo *****************************************************
            )>> "%File_Version_List%"
        ) else (
            (
                echo Not defined version in !Application!
                echo =====================================================
            )>> "%ErrorFile%"
        )
    )
    If Exist "%ErrorFile%" Start "" "%ErrorFile%"
    If Exist "%File_Version_List%" Start "" /MAX "%File_Version_List%" & Exit
    ::*******************************************************************
    :GetVersion <ApplicationPath> <Version>
    Rem le paramètre %~1 represente le chemin complet de l'application
    Rem sans les doubles quotes
    Rem le paramètre %2 représente la variable qu'on va définir 
    Rem (dans notre cas %2=Version)
    FOR /F "tokens=2 delims==" %%I IN (
      'wmic datafile where "name='%~1'" get version /format:Textvaluelist 2^>^nul'
    ) DO FOR /F "delims=" %%A IN ("%%I") DO SET "%2=%%A"
    Exit /b
    ::*******************************************************************
    :Add_backSlash <String>
    Rem Subroutine pour remplaçer le "\" par un double "\\" dans un String
    Set "Application=%1"
    Set "String=\"
    Set "NewString=\\"
    Call Set "Application=%%Application:%String%=%NewString%%%"
    Exit /b
    ::*******************************************************************
    :Remove_backSlash <String>
    Rem Subroutine pour remplaçer le double "\\" par un simple "\" dans un String
    Set "Application=%1"
    Set "String=\\"
    Set "NewString=\"
    Call Set "Application=%%Application:%String%=%NewString%%%"
    Exit /b
    ::*******************************************************************
    :Get_AppName <FullPath> <AppName>
    Rem %1 = FullPath
    Rem %2 = AppName
    for %%i in (%1) do set "%2=%%~nxi"
    exit /b
    ::*******************************************************************

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Récupérer la version d'un .exe avec une url
    Par budocay dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 26/10/2015, 09h28
  2. [PowerShell] Powershell: récupérer le résultat d'un exe dans une RichTextBox
    Par Bruno.Lanciau dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 12/02/2014, 10h17
  3. Réponses: 2
    Dernier message: 26/01/2012, 11h41
  4. Récupérer exp version 9i pour utiliser dans une 11g
    Par StéphanieBB dans le forum Import/Export
    Réponses: 8
    Dernier message: 23/01/2012, 16h50
  5. Récupérer le résultat d'un .exe dans une variable
    Par stepd dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 02/12/2008, 09h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo