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

VBScript Discussion :

Afficher propriétés fichier en ligne de commande


Sujet :

VBScript

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Afficher propriétés fichier en ligne de commande
    Bonjour,
    Je cherche à afficher les propriétés d'un fichier exécutable en ligne de commande avec le résultat sur la ligne de commande ou dans un fichier pour traitement ultérieur.
    Ce qui m'intéresse est dans l'onglet version, champ ServicePack. Ce champ ne doit pas être standard et il n'est pas affiché avec l'utilitaire filever.exe.

    Cordialement.

    PS : je ne sais pas écrire en VBS, donc si quelqu'un peut m'écrire le script complet, merci d'avance !
    l'url http://msdn.microsoft.com/en-us/libr...81(VS.85).aspx indique sans doute les fonctions à appeler

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 416
    Points : 5 808
    Points
    5 808
    Par défaut
    Salut
    Essaie avec ce code:
    Code : 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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    Option Explicit
    Dim sFileName,Result1,Result2,I,objDialog,OpenFile,Tb(41),fso,f
     
    tb(0) ="Nom"
    tb(1) ="Taille"
    tb(2) ="Type"
    tb(3) ="Date de modification"
    tb(4) ="Date de création"
    tb(5) ="Date d'accès"
    tb(6) ="Attributs"
    tb(7) ="État"
    tb(8) ="Propriétaire"
    tb(9) ="Auteur"
    tb(10)="Titre"
    tb(11)="Objet"
    tb(12)="Catégorie"
    tb(13)="Pages"
    tb(14)="Commentaires"
    tb(15)="Copyright"
    tb(16)="Artiste"				'20
    tb(17)="Titre de l'album"
    tb(18)="Année"
    tb(19)="Numéro de piste"
    tb(20)="Genre"
    tb(21)="Durée"
    tb(22)="Débit"
    tb(23)="Protégée"
    tb(24)="Modèle d'appareil photo"
    tb(25)="Date du cliché"
    tb(26)="Dimensions"
    tb(27)=""
    tb(25)=""
    tb(29)="Nom de l'épisode"
    tb(30)="Description du programme"
    tb(31)=""
    tb(32)="Taille de l'échantillon audio"
    tb(33)="Taux d'échantillonnage audio"
    tb(34)="Chaînes"
    tb(35)="Entreprise"
    tb(36)="Description"				'Ligne 40
    tb(37)="Version du fichier"
    tb(38)="Nom du produit"
    tb(39)="Version du produit"
    tb(40)="Keywords"
     
    Set objDialog=CreateObject("SAFRCFileDlg.FileOpen")
    ObjDialog.OpenFileOpenDlg
    OpenFile=objDialog.FileName
     
    sFileName=objDialog.FileName
     
    if sFileName="" then Wscript.Quit
    Result1=Mid(sFileName,1,InstrRev(sFileName,"\"))
    Result2=Right(sFileName,Len(sFileName)-InstrRev(sFileName,"\"))
    EcrireInfos		                            ' Ecriture des infos dans C:\Détails.txt
    msgbox DetailsFichierVBS + VbNewLine + SrvcPack      'A mettre en commentaire si on veut pas de message
    '==================================
    Function DetailsFichierVBS()
            dim objShell					'Ligne 59
            dim objFolder					
     
            set objShell = CreateObject("shell.Application")
            set objFolder = objShell.NameSpace(Result1)
     
            if (not objFolder is nothing) then
                dim objFolderItem
     
                set objFolderItem = objFolder.ParseName(Result2)
     
                if (not objFolderItem Is Nothing) then			'Ligne 70
                  dim objInfo
                  For i=0 to 41
                     If objFolder.GetDetailsOf(objFolderItem, I) <> "" then
                       objInfo = objInfo & FormaterTexte(tb(I)) & ":   " & objFolder.GetDetailsOf(objFolderItem, I) & VbNewLine
                     End If
                  Next
               end if
               set objFolderItem = nothing
            end if
            DetailsFichierVBS=objInfo					'Ligne 80
            set objFolder = nothing
            set objShell = nothing
     End function
    '==============================
    Function FormaterTexte(sText)
         If len(stext)<=31 then
            stext=stext & String(31-Len(stext)," ") & VbTab
         End If
      FormaterTexte=sText
    End Function
    '==============================
    Sub EcrireInfos()
      Const ForWriting=2
      set fso=CreateObject("Scripting.FileSystemObject")
      set f=fso.OpenTextFile("C:\Détails.txt",ForWriting,True)
      F.Write (DetailsFichierVBS + VbNewLine + SrvcPack)
      F.Close
    End Sub
    '===============================
    Function SrvcPack()
        Dim strComputer,objWMIService,Ret,colOperatingSystems,objOperatingSystem
     strComputer = "."
       Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" _
        & strComputer & "\root\cimv2")
       Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
       For Each objOperatingSystem in colOperatingSystems
          Ret=Ret & "Service Pack      : " & objOperatingSystem.ServicePackMajorVersion  _
            & "." & objOperatingSystem.ServicePackMinorVersion
       Next
       SrvcPack=Ret
    End Function
    Pour le Service Pack, je suppose que tu veux celui de Windows sinon j'aurais loupé quelque chose dans ton message !

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Non c'est la propriété Service pack d'un fichier que je cherche
    Merci Moncef pour ta réponse,
    Mais ce n'était pas la version service pack de windows que je recherche mais celle d'un fichier exécutable (Business One). En effet, la seule façon de connaître le service pack de Business one est de faire le clic droit sur le fichier, propriétés, puis version et enfin ServicePack.

    Autant j'arrive à avoir tous les autres paramètres : patch level, version logiciel,... pas moyen d'avoir ServicePack.
    Si je regarde la liste des propriétés de la méthode FileVersionInfo (cf. http://msdn.microsoft.com/en-us/libr...o_members.aspx), y'a tout sauf ServicePack.
    Mes cours de programmation sont loin ! Je ne sais pas s'il est possible de consulter une propriété supplémentaire non standard ajoutée par SAP (éditeur de Business One) sur l'objet.

    Par exemple, en powershell, j'utilise la commande :
    PS C:\root> get-childitem at.exe | foreach-object { "{0}`t{1}" -f $_.Name, [System.Diagnostics.FileVersionInfo]::GetVersionInfo($_).filebuildpart }
    Et je remplace filebuildpart par toutes les propriétés indiquées dans la doc une à une. J'arrive à tout voir, mais pas moyen de voir ServicePack, pourtant au cliquodrome, cette propriété apparait bien.

    Merci.

  4. #4
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut capture écran
    Voici la capture d'écran
    Images attachées Images attachées  

  5. #5
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 416
    Points : 5 808
    Points
    5 808
    Par défaut
    Salut

    Après de longues recherches, j'ai pu trouver une solution:
    Télécharge le fichier FileProps.dll et places-en une copie dans le dossier System32.
    Ensuite dans une fenêtre DOS(ou dans la boîte Exécuter), exécute la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RegSvr32 C:\Windows\System32\FileProps.dll
    Ensuite enregistre le code suivant dans un fichier ".vbs" et exécute-le:
    Code : 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
    Set objDialog=CreateObject("SAFRCFileDlg.FileOpen")
    ObjDialog.OpenFileOpenDlg
    OpenFile=objDialog.FileName
     
    strFileName=objDialog.FileName
     
    Set FP=CreateObject("FileProps.PropClass") 'Référence à l'objet PropClass à utiliser
    FP.Init(strFileName)
    NL = vbNewLine ' pour ne pas trainer VbNewLine à chaque fois
     
     S = S + "File Attributes   : " & vbTab & FP.fAttribs(strFileName) & NL
     S = S + "CompanyName      : " & vbTab & FP.CompanyName & NL
     S = S + "FileDescription  : " & vbTab & FP.FileDescription & NL
     S = S + "FileType         : " & vbTab & FP.FileType & NL
     S = S + "FileVersion      : " & vbTab & FP.FileVersion & NL
     S = S + "InternalName     : " & vbTab & FP.InternalName & NL
     S = S + "LegalCopyright    : " & vbTab & FP.LegalCopyright & NL
     S = S + "OriginalFileName : " & vbTab & FP.OriginalFileName & NL
     S = S + "Operating System : " & vbTab & FP.OS & NL
     S = S + "ProductName      : " & vbTab & FP.ProductName & NL
     S = S + "ProductVersion   : " & vbTab & FP.ProductVersion & NL
     S = S + "ServicePack      : " & vbTab & FP.ServicePack 
    Msgbox S
    La DLL en question est une DLL ActiveX et non une DLL standard.
    Je l'ai construite en me basant sur une Class(Version.cls) de JBC tout en y ajoutant des "Property" telles que fAttribs et ServicePack.

    Rq: J'ai opté pour la DLL ActiveX pour pouvoir utiliser les objets qu'elle contient par le biais de la méthode CreateObject.
    Si c'était une DLL standard, on aura affaire au calvaire des Wrappers.

Discussions similaires

  1. chemin fichier par ligne de commande
    Par amirym dans le forum Scripts/Batch
    Réponses: 18
    Dernier message: 19/05/2007, 09h25
  2. import de fichier en ligne de commande
    Par gypa dans le forum Requêtes
    Réponses: 3
    Dernier message: 15/11/2006, 10h40
  3. Compresser un fichier en ligne de commande
    Par silvaS dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 07/07/2006, 16h59
  4. Impossible de supprimer fichier en ligne de commande
    Par alexg81 dans le forum Windows
    Réponses: 2
    Dernier message: 20/04/2006, 08h05
  5. Réponses: 3
    Dernier message: 08/03/2006, 15h54

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