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 :

ecriture dans le registre sans droit d'admin


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 32
    Points : 14
    Points
    14
    Par défaut ecriture dans le registre sans droit d'admin
    Hop, bonjour à tous c'est re-moi pour finaliser le script ^^

    je viens de m'appercevoir (grrr) que pour que mon script marche à la perfection il faut que l'utilisateur lambda puisse écrire dans le registre. Il parait que c'est possible alors je viens vers vous pour savoir si vous connaissez la méthode.

    Voilà la partie qui écrit dans le registre en tant qu'utilisateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ' Modification du chemin contenant la signature dans la base de registre basée sur la version d'outlook
    '----------------------------------------------------------------------
     
    RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\"&OutlookVer&".0\Common\General\Signatures"
    objShell.RegWrite RegKey , StrSignatureName
    merci à vous ^^

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 32
    Points : 14
    Points
    14
    Par défaut
    bon, en fait, c'est bon, l'écriture dans le registre se fait sans rien, c'est simplement un truc que je comprends pas :

    dans le 1er script "Interne.vbs" il doit executer "Externe.vbs" à la fin pratiquement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Set wshell = CreateObject("WScript.Shell")
    somelong = wshell.Run("wscript " + "Externe.vbs", 1, True)
    mais, ca ne marche qu'en admin, lorsque que je me mets sur une session d'utilisateur X, le script s'arrête à l'exe d'Externe.vbs qui ne lance pas, par contre, si je vais lancer les 2 scripts un par un, ca marche ...

    J'ai essayé de mettre le chemin entier du script Externe.vbs sur le serveur, mais ca ne marche pas non plus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set wshell = CreateObject("WScript.Shell")
    somelong = wshell.Run("wscript " + "\\mairie3\SYSVOL\ville-saintjeandelaruelle.fr\scripts\Externe.vbs", 1, True)
    et là aussi il faut exe un par un, donc si quelqu'un à une solution pour qu'Interne.vbs puisse exe Externe.vbs sur une session d'utilisateur X je suis preneur car là je tourne en rond je ne vois pas ou ca bug

    merci à vous ^^

  3. #3
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    En VBS la concaténation des chaines de caractères se fait avec & et non +
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 32
    Points : 14
    Points
    14
    Par défaut
    ok pour la chaine, mais en admin ca marche ^^

    alors maintenant que le reste en haut marche, il ne me reste que cela : je perds un peu mon latin et je nage et je touche au but alors ca m'enerve un peu ;p

    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
     
    Set filesys = CreateObject("Scripting.FileSystemObject")
     
    le_chemin_du_fichier = "C:\Temp\mjsr.bmp"
     
    if filesys.FileExists ("C:\Temp\mjsr.bmp") then
     
    ' Il existe donc.....
     
    Else
     
    End if
     
    ' Il n'existe pas, alors...
     
    else
     
    Set FSys = CreateObject("Scripting.FileSystemObject")
    Set MonFic = FSys.GetFile("\\mairie3\SYSVOL\ville-saintjeandelaruelle.fr\scripts\msjr.bmp")
    MonFic.Copy "C:\Temp\msjr.bmp", True
     
    end if

    j'explique ce que je veux faire, je veux que le script check l'existence d'un fichier, s'il existe il faut qu'il check le fichier source sur le serveur local, et si le fichier qui existe diffère il faut qu'il copie le fichier source.

    Si le fichier est le même que le fichier source du serveur il ne se passe rien.

    Si le fichier n'existe pas, alors il le copie.

    Ma dernière ligne, il copie le fichier quoi qu'il se passe (qu'il existe ou pas) ce qui n'est pas forcement top au niveau d'utilisation dans le réseau, je ne veux pas qu'il copie tous les matins le fichier si les attributs sont les mêmes. Enfin voilà, je fais limite de la chirurgie ce qui n'est pas forcément bien je pense ^^

  5. #5
    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 185
    Points
    17 185
    Par défaut
    Mauvaise imbrication de tes If ... Then, un End If de trop.
    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 ← ← 👈

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Rappelle rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If Condition Then
        'Si la condition est vrais, faire le code suivant
    Else
        'Sinon faire cela
    End If 'Marque la fin du If, aussi indispensable que le If et le Then
    'Par contre le Else est optionnel.
    L'utilisation des Else If :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    If Condition Then
       'code
    Else If Condition Then
       'code
    Else If Condition Then
       'code
    Else
       'Toujours optionnel
       'code
    End If
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 32
    Points : 14
    Points
    14
    Par défaut
    bon bah je nage complètement, j'ai beau comprendre la logique du If ... Then avec Else ou Case je n'arrive à rien (vivement les cours et la prog sur ti-82 est plus facile xD).

    voilà en gros ce qu'il faudrait si une âme charitable se montre :

    1ere étape :

    le script doit checker un fichier à un endroit particulier, il compare ce fichier par rapport à un autre fichier sur le serveur.

    - SI les fichiers sont identiques ALORS ne rien faire
    - SI les fichiers diffèrent ALORS copier le fichier du serveur sur l'endroit particulier du disque dur.
    - SI le fichier n'existe pas ALORS copier le fichier du serveur sur l'endroit particulier du disque dur.

    2eme étape :

    - Le script contrôle si outlook est lancé dans les processus au démarrage du pc (ça j'ai réussi à trouver comment faire)

    - SI outlook est dans le processus ALORS on coupe le processus et on le redemarre à la fin du script

    ce qui donne ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'ici on tue le processus d'outlook si il est lancé au démarrage
    '------------------------------------------------------------------------------------
     
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     
    Set colProcessList = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = 'Outlook.exe'")
     
    For Each objProcess in colProcessList
    objProcess.Terminate()
    Next
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    execution d'oulook même si le processus à été tué au début par le script
    '------------------------------------------------------------------------
     
     Dim O_Shell
     
      Set O_Shell = CreateObject("WScript.Shell")
    O_Shell.Run("outlook.exe")
     
     
     
    End Sub
    Donc là, le "si" dans mon commentaire n'est pas à prendre en compte puisque quoi qu'il se passe, je n'ai pas fais de boucle avec un Dim pour définir quoi que ce soit, donc le script relance toujours outlook.

    - SI outlook n'était pas dans le processus au début du script ALORS ne rien faire


    merci de l'aide qui sera apportée, j'en peux plus ^^

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 32
    Points : 14
    Points
    14
    Par défaut
    1ère étape (peut-être résolue) :

    que pensez-vous de cela :

    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
    'Création des variables pour le check de fichier
     
    Dim OFS, FichierReference ,OFSource, FichierSource
     
    '1 je crée la référence du fichier
     
    Set OFS = CreateObject("Scripting.FileSystemObject")
    Set OFSource = CreateObject("Scripting.FileSystemObject")
     
    '2 je vais obtenir le fichier msjr.bmp qui est dans le répertoire définit
     
    Set FichierReference = OFS.GetFile("C:\Documents and Settings\Administrateur\Bureau\test\msjr.bmp")
    Set FichierSource = OFS.GetFile("C:\Documents and Settings\Administrateur\Bureau\Signatures\msjr.bmp")
     
    'debut de la comparaison des fichiers
     
    '1 si les fichiers sont égaux alors on ne copie rien
     
    If FichierReference = FichierSource Then
    Set FSys = CreateObject("Scripting.FileSystemObject")
    Set MonFic = FSys.GetFile("C:\Documents and Settings\Administrateur\Bureau\Signatures\msjr.bmp")
    MonFic.Copy "C:\Documents and Settings\Administrateur\Bureau\test\msjr.bmp", false
     
    '2 si le fichier reference est différent que le fichier source alors on copie le fichier source
     
    Elseif FichierReference <> FichierSource then
    Set FSys = CreateObject("Scripting.FileSystemObject")
    Set MonFic = FSys.GetFile("C:\Documents and Settings\Administrateur\Bureau\Signatures\msjr.bmp")
    MonFic.Copy "C:\Documents and Settings\Administrateur\Bureau\test\msjr.bmp", True
     
    End if

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 32
    Points : 14
    Points
    14
    Par défaut
    Bon j'ai rajouté une variable pour voir si le script marchait et ce n'est pas le cas, est-ce que quelqu'un pourrait me dire quoi modifier svp ?

    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
    'Création des variables pour le check de fichier
     
    Dim OFS, FichierReference ,OFSource, FichierSource, OFSfichier
     
    ' je crée la référence du fichier
    Set OFSfichier = CreateObject("Scripting.FileSystemObject")
    'Si le fichier existe abandonne.
    If (OFSfichier.FileExists("C:\Temp\msjr.bmp")) Then
    'Si le fichier n'existe pas il va copier le ficher
    ElseIf not (OFSfichier.FileExists("C:\Temp\msjr.bmp")) Then
     
    Set FSys = CreateObject("Scripting.FileSystemObject")
    Set MonFic = FSys.GetFile("\\mairie3\SYSVOL\ville-saintjeandelaruelle.fr\scripts\msjr.bmp")
    MonFic.Copy "C:\Temp\msjr.bmp"
     
     
    '---------------------------------
    'je crée la référence du fichier
     
    Set OFS = CreateObject("Scripting.FileSystemObject")
    Set OFSource = CreateObject("Scripting.FileSystemObject")
     
    'je vais obtenir le fichier msjr.bmp qui est dans le répertoire définit
     
    Set FichierReference = OFS.GetFile("C:\Temp\msjr.bmp")
    Set FichierSource = OFS.GetFile("\\mairie3\SYSVOL\ville-saintjeandelaruelle.fr\scripts\msjr.bmp")
     
    'debut de la comparaison des fichiers
     
    'si les fichiers sont égaux alors on ne copie rien
     
    If FichierReference = FichierSource Then
    Set FSys = CreateObject("Scripting.FileSystemObject")
    Set MonFic = FSys.GetFile("\\mairie3\SYSVOL\ville-saintjeandelaruelle.fr\scripts\msjr.bmp")
    MonFic.Copy "C:\Temp\msjr.bmp", false
     
    '2 si le fichier reference est différent que le fichier source alors on copie le fichier source
     
    Elseif FichierReference <> FichierSource then
    Set FSys = CreateObject("Scripting.FileSystemObject")
    Set MonFic = FSys.GetFile("\\mairie3\SYSVOL\ville-saintjeandelaruelle.fr\scripts\msjr.bmp")
    MonFic.Copy "C:\Temp\msjr.bmp", True
     
    End if
    End if
    A partir du moment ou le fichier n'existe pas et qu'il le crée, il ne prend pas en compte le fait de comparer les fichiers et donc ne copie pas le fichier source si le fichier reference à été modifié. :/

  10. #10
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Je ne colerais pas le else et le if dans le cas du else if à ta place.

    Heu ... dans les deux cas tu fait la même chose. Je pense que tu ne t'enmèles pas que dans la synthaxe du VBS.
    En info faire un truc du genre :
    SI les fichiers sont identiques ALORS ne rien faire
    Ce n'est pas élégant et toujours simple.
    En général on résonne à l'inverse : On ne fait des trucs que Si une condition est vraie, car par défaut si la condition n'est pas vrai, cela ne faire rien à moins que l'on précise une alternative (le Sinon).

    Bref reprend tes conditions et fait un pseudo code genre :
    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
    Procedure principale
       A est un nombre
       R est un nombre
       B est une chaine de caractère
     
       A = DemandeUnNombre
     
       Si A <> Null ET A <> 0 ET A est Initialisé Alors  
          R = Reste(A/2)
     
          Si R <> 0 Alors
             B = "A est pair."
          Sinon
             B = "A est impair."
          Fin de Si
       Fin de Si
     
       Afficher (B) 'en VBS les msgbox
    Fin de Procedure Principale
     
     
    Fonction DemandeUnNombre() renvois un Nombre
        res est un nombre
        res = DemanderNombre() 'en VBS c'est les InputBox
        Retourne res
    Fin de Fonction
    Voila le genre de pseudo que tu peux faire pour mettre en place tes idées.
    Ce qu'il faut retenir c'est qu'en prog les structures conditionnelles, fonction, et tout autre chose délimitant une zone de ton code, ont un début et une fin.

    En C/C++/C# on utilise les { et } pour marquer respectivement le début et la fin d'un bloc de code.
    En VBS cela commence par le nom de l'élément et cela fini un End le nom de l'élément.
    Donc un IF Then End If, que l'on peut traduire Si Alors Fin de Si.
    Bref c'est plus proche de mon pseudo code que du C

    Sur TI-82 tu dois avoir la même chose, mais je ne sais plus quel langage c'est.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 32
    Points : 14
    Points
    14
    Par défaut
    c'est du basic sur TI-82 ^^ y'a moins de variables ;p

    sinon oui ca marche comme tu as mis

    je ne peux pas faire le truc en c ou c++ je n'y connais rien xD xD


    Enfin bon même avec ton exemple, ca ne reste que de la théorie sur papier pour moi, je vois la logique, mais si j'ai pas un exemple concret je m'en sors pas ;o


    enfin merci de l'aide quand même ^^

  12. #12
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Bah je peux te faire cela :
    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
    'Création des variables pour le check de fichier
     
    Dim OFS, FichierReference ,OFSource, FichierSource, OFSfichier
     
    ' je crée la référence du fichier
    Set OFSfichier = CreateObject("Scripting.FileSystemObject")
    'Si le fichier existe abandonne.
    If (OFSfichier.FileExists("C:\Temp\msjr.bmp")) Then
       'Le fichier existe, as tu un traitement à faire ?
       'Si ce n'est aps le cas, teste qu'il n'existe pas directement, et supprime le Else
        'If Not OFSfichier.FileExists("C:\Temp\msjr.bmp") Then
            'le code qui est dans le Else
    Else 'on sait déjà que l'on est dans un cas où le fichier n'existe pas, pas besoin de retester
    'les else if ne sont à utiliser que pour tester plusieurs conditions, genre i = 4 puis 6 puis 8 ...
       Set FSys = CreateObject("Scripting.FileSystemObject") 'je le laisse pour ne aps reprendre tout le code, mais tu as déjà OFSfichier , donc inutile de crér un nouveau FSO, réutilise le premier.
       Set MonFic = FSys.GetFile("\\mairie3\SYSVOL\ville-saintjeandelaruelle.fr\scripts\msjr.bmp")
       MonFic.Copy "C:\Temp\msjr.bmp"
     
     
       '---------------------------------
       'je crée la référence du fichier
     
       'même remarque que précédement OFS et OFSource sont inutile, utilises OFSfichier.
       Set OFS = CreateObject("Scripting.FileSystemObject") 
       Set OFSource = CreateObject("Scripting.FileSystemObject")
     
       'je vais obtenir le fichier msjr.bmp qui est dans le répertoire définit
     
       Set FichierReference = OFS.GetFile("C:\Temp\msjr.bmp") 'cette variable ne sert à rien !!!
       Set FichierSource = OFS.GetFile("\\mairie3\SYSVOL\ville-saintjeandelaruelle.fr\scripts\msjr.bmp")
     
       'debut de la comparaison des fichiers
     
       'si le fichier reference est différent que le fichier source alors on copie le fichier source
     
       If FichierReference <> FichierSource Then
          FichierSource.Copy "C:\Temp\msjr.bmp", True
     
       End if
    End if
    Mais si tu ne le fait pas toi même tu ne sauras pas refaire ce que je te propose. A toi de voir.

    La solution plus épurée avec d'autre commentaire :
    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
    'Création des variables pour le check de fichier
     
    Dim OFS, FichierReference ,OFSource, FichierSource, OFSfichier
     
    ' Récupération de FileSystemObject
    Set OFSfichier = CreateObject("Scripting.FileSystemObject")
     
    If Not OFSfichier.FileExists("C:\Temp\msjr.bmp") Then
       Set FichierSource = OFSfichier.GetFile("\\mairie3\SYSVOL\ville-saintjeandelaruelle.fr\scripts\msjr.bmp")
     
       'Tu copies vers temp le fichier dans qu'elle but ?
       FichierSource.Copy "C:\Temp\msjr.bmp"
     
       Set FichierReference = OFSfichier.GetFile("C:\Temp\msjr.bmp")
     
     
       'Pour toi c koi un fichier différent ? Je ne suis pas sur que ce test faille ce que tu veux.
       'En tout cas comme le fichier référence est une copie du fichier source, les fichiers sont forcément identique, donc le test en soit n'as pas de sens
       If FichierReference <> FichierSource Then
          'Recopier le fichier n'a pas de sens s'il ne sont pas différent.
          FichierSource.Copy "C:\Temp\msjr.bmp", True
       End if
    End if
    Bon voilà, je n'ai pas ecrit de solution final, car ce que tu fais à l'origine n'as pas de sens, et du coup je ne sais pas ce que tu veux faire. Lit les commentaires et tu comprendras.

    Je te conseil réellement de prendre ton temps et d'écrire sur un papier ce que tu veux faire, car là j'ai l'impression que tu ne sais pas ce que tu fais.
    Pour t'aider, écrit ce que tu ferais à la main, à la place du programme.
    Puis fais un pseudo code, puis traduit le en VBS.

    Il te manque quand même pas mal de notion de programmation, ne serait il pas judicieux de prendre des cours avant de faire ce que tu fais.
    Si tu ne comprends pas ce que tu fais, tu vas juste réussir à apprendre des fausses vérités ce qui sera pénalisant pour la suite.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 32
    Points : 14
    Points
    14
    Par défaut
    bah pour moi c'est simple dans ma tête, mais beaucoup moins dans le code ne connaissant pas tout encore, c'est pour ca que j'ai besoin de voir la finalisation pour faire la même chose.

    Le FichierRéférence n'est pas forcement la copie du FichierSource !

    car le script va regarder si le fichier existe
    - s'il existe alors :
    - il compare les deux fichiers, s'il voit une différence entre les deux, alors il copie le FichierSource à l'endroit du FichierRéférence

    - s'il n'existe pas alors il copie le FichierSource dans le dossier

    Je suis un peu fatigué et donc j'ai mal du m'exprimer par rapport à cela, désolé ^^

    donc en gros, ca ferait comme en math avec les F(g(x)) si tu vois ce que je veux dire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    car le script va regarder si le fichier existe
    - s'il existe alors : 
    
    - il compare les deux fichiers, s'il voit une différence entre les deux, alors il copie le FichierSource à l'endroit du FichierRéférence
    
    - s'il n'existe pas alors il copie le FichierSource dans le dossier
    avec en rouge : f et en vert g(x)

    (je vois la logique comme cela ^^)

  14. #14
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    il compare les deux fichiers, s'il voit une différence entre les deux, alors il copie le FichierSource à l'endroit du FichierRéférence
    Et pour toi c koi une différence entre les deux fichiers ?
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 32
    Points : 14
    Points
    14
    Par défaut
    différence de taille, ou de dernière création, enfin n'importe quoi concernant l'attribut du FichierRéférence par rapport au FichierSource

    en gros, l'utilisateur peut modifier le FichierRéférence, donc il faut qu'on puisse via le script remettre le bon fichier, mais si rien n'a été touché, il ne se passe rien, il faudrait pouvoir regarder sa par le DateCreated

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If FichierReference.datecreated <> FichierSource.DateCreated Then
    ça doit être quelque chose comme ça non ?

  16. #16
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Le problème de la date de création, c'est que c'est la date de création.
    Si le fichier est modifié, la date de création ne change pas

    Je t'aiderais un peu plus demain, là je n'ai plus le temps.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 32
    Points : 14
    Points
    14
    Par défaut
    ah voilà pourquoi ca ne marcherait pas ! d:

    donc il va falloir que je trouve comment faire celà via la taille du fichier

    je pars pour mes tests ;d

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 32
    Points : 14
    Points
    14
    Par défaut
    Voilà je pense que la réponse donne ça : une personne m'a aidée et je n'ai plus de pratique

    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
    'vérification du fichier msjr.bmp
    '------------------------------------------------
     
    'définition des variables des fichiers à comparer
     
    Dim OFS, FichierReference , FichierSource
     
    Set OFS = CreateObject("Scripting.FileSystemObject")
    Set FichierSource = OFS.GetFile("\\mairie3\SYSVOL\ville-saintjeandelaruelle.fr\scripts\msjr.bmp")
    Set FichierReference = OFS.GetFile("C:\Temp\msjr.bmp")
     
    'Si le fichier existe, alors on compare la taille et la dernière date en écriture. Si cela diffère, on coope le fichier source.
     
    If  (OFS.FileExists("C:\Temp\msjr.bmp")) Then
     
        if FichierReference.size <> FichierSource.size OR FichierReference.DateLastModified <> FichierSource.DateLastModified then
     
            FichierSource.Copy "C:\Temp\msjr.bmp", True
     
        end if
     
    'si le fichier n'existe pas on le copie
     
    else
     
        FichierSource.Copy "C:\Temp\msjr.bmp"
     
    End if

  19. #19
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Cela me paraît très bien cela. En fait c même ce que je voulais te proposer si j'avais eu le temps de le faire.

    Juste une chose tu recopies le fichier si les taille diffèrent OU les date de modifications diffèrent. Si tu veux ne recopier le fichier que si les deux conditions sont vrais utilise AND sinon laisse comme cela.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 32
    Points : 14
    Points
    14
    Par défaut
    merci en tout cas, le script fonctionne parfaitement ^^

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

Discussions similaires

  1. Ecriture dans un fichier sans l'écraser
    Par Xx_raaY dans le forum C#
    Réponses: 4
    Dernier message: 02/06/2009, 09h29
  2. Ecriture dans le registre sans droits
    Par NorexaMS dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 29/05/2009, 18h34
  3. Installer SQL Server sans droits d'admin Windows
    Par dily0403 dans le forum Administration
    Réponses: 3
    Dernier message: 25/11/2008, 21h46
  4. Ecriture dans un fichier sans ecraser le contenu
    Par Mo_Poly dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 07/03/2007, 23h49
  5. Réponses: 4
    Dernier message: 24/08/2006, 23h26

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