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 :

Problème script - Execution du fichier malgrès fonction


Sujet :

VBScript

  1. #1
    Membre du Club Avatar de torrgovin
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 105
    Points : 69
    Points
    69
    Par défaut Problème script - Execution du fichier malgrès fonction
    Bonjour à tous,
    J'ai modifié un petit script simple qui permet d'installer un logiciel si il n'est pas installé, et si il est déjà installé, il ne lance pas l'installation.

    Comment j'ai procédé ?
    J'ai utilisé un script trouvé sur la toile qui permet de vérifier si la clé de registre du logiciel est présente, si oui, il ne passe rien, si non, elle exécute le logiciel.

    Malheureusement, le script voit bien que la clé existe, mais continue malgré tout de lancer le logiciel...

    J'ai essayé de trouver une erreur dans mon script, mais je ne vois plus rien.

    Voici mon script :

    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
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    '************************************
    '* Registry Key Exists (Function)
    '* Returns a value (true / false)
    '************************************
    'This function checks to see if a passed registry key exists, and
    'returns true if it does
    '
    'Requirements: The registry key you are looking for (RegistryKey)
    'Note: RegistryKey MUST end in a backslash (\), or FALSE will be returned
    Function RegistryKeyExists (RegistryKey)
      'Ensure the last character is a backslash (\) - if it isn't, we aren't looking for a key
      If (Right(RegistryKey, 1) <> "\") Then
        'It's not a registry key we are looking for
        RegistryKeyExists = false
      Else
        'If there isnt the key when we read it, it will return an error, so we need to resume
        On Error Resume Next
     
        'Try reading the key
        WshShell.RegRead RegistryKey
     
        'Catch the error
        Select Case Err
          'Error Code 0 = 'success'
          Case 0:
            RegistryKeyExists = true
          'This checks for the (Default) value existing (but being blank); as well as key's not existing at all (same error code)
          Case &h80070002:
            'Read the error description, removing the registry key from that description
            ErrDescription = Replace(Err.description, RegistryKey, "")
     
            'Clear the error
            Err.clear
     
            'Read in a registry entry we know doesn't exist (to create an error description for something that doesnt exist)
            WshShell.RegRead "HKEY_ERROR\"
     
            'The registry key exists if the error description from the HKEY_ERROR RegRead attempt doesn't match the error
            'description from our RegistryKey RegRead attempt
            If (ErrDescription <> Replace(Err.description, "HKEY_ERROR\", "")) Then
              RegistryKeyExists = true
            Else
              RegistryKeyExists = false
            End If
          'Any other error code is a failure code
          Case Else:
            RegistryKeyExists = false
        End Select
     
        'Turn error reporting back on
        On Error Goto 0
      End If
    End Function
     
    Dim WSHShell, objNET, objSysInfo, objComputer, strComputerDN, strGroups, Group, GroupName, Mytest
     
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    Set objSysInfo = WScript.CreateObject("ADSystemInfo")
    strComputerDN = objSysInfo.COMPUTERNAME
    Set objComputer = GetObject("LDAP://" & strComputerDN) 'Binds the objComputer to the Distiguished Name of the Computer in reference
    Set objNetwork = WScript.CreateObject("Wscript.Network")
     
    If RegistryKeyExists ("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\OCS INVENTORY\")=True Then 'si le service OCS Agent éxiste déjà alors
    MsgBox "le service existe"
     
     
            Else   'si le service Ocs Agent n'éxiste pas alors
                    'lance le fichier agent
                    Set aAgent = WScript.CreateObject("WScript.Shell")
                    aAgent.Run("\\group.tok\net_install\ocs\ocspackage.exe")
     
    End If
     
    set WshShell = WScript.CreateObject("WScript.Shell")
    DesktopPath = WSHShell.SpecialFolders("Desktop")
     
    '''''''''''''''''''''''''''''''''''''''''''''''''
     
    WScript.Sleep 30000    'Délai d attente de 30 secondes le temps de l'installation de lagent
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objSourceFile = objFSO.OpenTextFile("C:\Program Files\OCS Inventory Agent\service.ini", 1) ' Fichier originale
    Set objSourceFile2 = objFSO.OpenTextFile("\\group.tok\net_install\ocs\service_tf.ini", 1) 'Fichier copié
     
    vrNumLigne = 0
     
    Do Until objSourceFile.AtEndOfStream Or objSourceFile2.AtEndOfStream
       vrNumLigne = vrNumLigne + 1
       vrLigne = objSourceFile.ReadLine
       vrLigne2 = objSourceFile2.ReadLine
       vrComprLign = StrComp(vrLigne, vrLigne2, 1)
     
          If vrComprLign = 1 Or vrComprLign = -1 Or IsNull(vrComprLign) Then
                 vrNul = "Les fichiers ne sont pas les mêmes"
     
          Else
          End If
     
    Loop
    objSourceFile.Close
    objSourceFile2.Close
     
    If IsEmpty(vrNul) Then
                    'les fichiers sont identiques alors aucune opération
    Else
                    'les fichiers sont différents alors :
     
                                 'Supression du fichier service.ini par défaut
                    Set aFile = CreateObject("Scripting.FileSystemObject")
                    aFile.DeleteFile("C:\Program Files\OCS Inventory Agent\service.ini")
     
                    'Copie du nouveau fichier de config
                    Set fso = CreateObject("Scripting.FileSystemObject")
                    Set aFile = fso.GetFile("\\group.tok\net_install\ocs\service_tf.ini")
                    aFile.Copy("C:\Program Files\OCS Inventory Agent\service_tf.ini")
     
                                    'Renommage du fichier de config
                    Set objFSO = CreateObject("Scripting.FileSystemObject")
                    objFSO.MoveFile "C:\Program Files\OCS Inventory Agent\service_tf.ini" , "C:\Program Files\OCS Inventory Agent\service.ini"
     
     WScript.Sleep 30000    'Délai d attente de 10 secondes le temps de l'installation de lagent
     
                    'lance le fichier contact
                    Set aContact = WScript.CreateObject("WScript.Shell")
                    aContact.Run("file:///C:\Program%20Files\OCS%20Inventory%20Agent\Ocs_contact.exe")
    End If
    Merci à vous !
    Cordialement,

  2. #2
    Membre du Club Avatar de torrgovin
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 105
    Points : 69
    Points
    69
    Par défaut
    J'ai compris.
    Le problème se pose au niveau du script de comparaison.

    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
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objSourceFile = objFSO.OpenTextFile("C:\Program Files\OCS Inventory Agent\service.ini", 1) ' Fichier originale
    Set objSourceFile2 = objFSO.OpenTextFile("\\group.tok\net_install\ocs\service_tf.ini", 1) 'Fichier copié
     
    vrNumLigne = 0
     
    Do Until objSourceFile.AtEndOfStream Or objSourceFile2.AtEndOfStream
       vrNumLigne = vrNumLigne + 1
       vrLigne = objSourceFile.ReadLine
       vrLigne2 = objSourceFile2.ReadLine
       vrComprLign = StrComp(vrLigne, vrLigne2, 1)
     
          If vrComprLign = 1 Or vrComprLign = -1 Or IsNull(vrComprLign) Then
                 vrNul = "Les fichiers ne sont pas les mêmes"
     
          Else
          End If
     
    Loop
    objSourceFile.Close
    objSourceFile2.Close
     
    If IsEmpty(vrNul) Then
                    'les fichiers sont identiques alors aucune opération
    Else
    MsgBox "les fichiers sont différents"
                    'les fichiers sont différents alors :
     
                                 'Supression du fichier service.ini par défaut
                    Set aFile = CreateObject("Scripting.FileSystemObject")
                    aFile.DeleteFile("C:\Program Files\OCS Inventory Agent\service.ini")
     
                    'Copie du nouveau fichier de config
                    Set fso = CreateObject("Scripting.FileSystemObject")
                    Set aFile = fso.GetFile("\\group.tok\net_install\ocs\service_tf.ini")
                    aFile.Copy("C:\Program Files\OCS Inventory Agent\service_tf.ini")
     
                                    'Renommage du fichier de config
                    Set objFSO = CreateObject("Scripting.FileSystemObject")
                    objFSO.MoveFile "C:\Program Files\OCS Inventory Agent\service_tf.ini" , "C:\Program Files\OCS Inventory Agent\service.ini"
     
     WScript.Sleep 30000    'Délai d attente de 10 secondes le temps de l'installation de lagent
     
                    'lance le fichier contact
                    Set aContact = WScript.CreateObject("WScript.Shell")
                    aContact.Run("file:///C:\Program%20Files\OCS%20Inventory%20Agent\Ocs_contact.exe")
    End If
    Les 2 fichiers comparés sont bien les mêmes, mais il indique qu'ils sont différents...
    Y'a t'il une erreur dans le script ?

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 170
    Points
    17 170
    Par défaut
    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
     
    vrNul = "Les fichiers sont les mêmes"
    vrNumLigne = 0
    Do Until objSourceFile.AtEndOfStream Or objSourceFile2.AtEndOfStream
       vrNumLigne = vrNumLigne + 1
       vrLigne = objSourceFile.ReadLine
       vrLigne2 = objSourceFile2.ReadLine
       'vrComprLign = StrComp(vrLigne, vrLigne2, 1)
     
    '      If vrComprLign = 1 Or vrComprLign = -1 Or IsNull(vrComprLign) Then
    '             vrNul = "Les fichiers ne sont pas les mêmes"
    ' 
    '      Else
    '      End If
          If vrLigne <> vrLigne2 Then
                 vrNul = "Les fichiers ne sont pas les mêmes, ligne " & vrNumLigne
                 Exit Do
         End If
    Loop
    msgbox vrNul, vbinformation
    Pourquoi passer par la fonction StrComp ?
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Membre du Club Avatar de torrgovin
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 105
    Points : 69
    Points
    69
    Par défaut
    Merci pour la réponse.

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

Discussions similaires

  1. [Batch] Script selection de fichiers en fonction de la date de modification
    Par jlouedoc dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 11/02/2015, 14h56
  2. Probléme d'execution de fichier js
    Par demenageman dans le forum IIS
    Réponses: 0
    Dernier message: 24/07/2012, 10h16
  3. Script shell copie fichier en fonction de leur nom
    Par Borowsky dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 09/12/2009, 09h27
  4. Réponses: 5
    Dernier message: 29/09/2008, 15h42
  5. Problème d'execution de fichiers
    Par flysurfer dans le forum Windows XP
    Réponses: 2
    Dernier message: 09/05/2008, 20h58

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