Problème script

Bonjour,

je débute en script vbs et j'ai un problème dans ma boucle until :
dim i
DIM fso
set fso = CreateObject("Scripting.FileSystemObject")
i = 3
Do until i = 1
If (fso.FileExists("C:\Program Files\citrix\ICA Client\pn.exe")) Then
i = 3
else
shell.Open("c:\citrix.bat")
i = 1
end if

loop

je ne comprend pas pourquoi mon script passe dans le if et dans le else
je pense que sa viens sans doute de ma syntaxe pour rechercher si le fichier existe
pouvez vous m'aider merci

3 réponses

  1. Modérateur
    Bonjour,

    Votre boucle est mal conçue.

    Vous dites :
    >i = 3
    >Jusqu'à ce que i soit égal à 1 (Do Until i = 1)
    >Si le fichier existe alors i = 3
    >Sinon, on ouvre un fichier .bat et i = 1

    Donc, en gros, si ton fichier "C:\Program Files\citrix\ICA Client\pn.exe" n'existe pas, i sera toujours égal à 3 et donc ta boucle sera infinie (jusqu'à ce que i soit égal à 1, cela n'arrivera jamais...)

    Par contre, s'il existe, alors pas de souci :
    >i = 3
    >Fait jusqu'à ce que i = 1 ==> comme i = 3 on le fait
    >Test IF
    >le fichier existe donc Else i = 1 ==> on sort de la boucle Do Loop...

    Après, pour plus de précisions, dis nous ce que tu souhaites faire...
    1. C'est le but en fait pijaku, je veux que tant que ce fichier existe il passe dans le if

      en fait j'ai enlevé dans le if que si le pn.exe existe je lance une désinstall.

      Donc tant que le fichier existe je veux qu'e le script passe dans la boucle.

      Donc en fait si le fichier n'existe pas il devrait passer dans le else et ensuite être égal à 1 et sortir. Mais j'ai l'impression qu'il passe dans le else même si le fichier existe et je comprend pas pourquoi
      1. Modérateur
        Salut,

        Je ne vonnais pas vb. Par contre, j'ai testé ton code sous vba, juste pour voir... Et bien ça fonctionne.
        Si le fichier existe, il passe dans le If mais pas le Else, s'il n'existe pas, il passe dans le else...
        Par contre, si le fichier existe et que je ne le supprime pas dans le If, la boucle est infinie...