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 :

Nom du répertoire de stockage du script


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 18
    Par défaut Nom du répertoire de stockage du script
    Bonjour,

    Dans un script vbs, je ne souhaite pas mettre le répertoire de stockage en dur, mais je récupère sa valeur avec le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    objDskPath = objShell.SpecialFolders("Desktop")
    strRepMoteur = objFSO.GetParentFolderName(WScript.ScriptFullName)
    Après compilation du script, l'exécutable correspondant se lance dans un répertoire de travail temporaire et c'est cette valeur que je récupère au lieu du répertoire dans lequel se trouve le fichier.

    Est-ce qu'il est possible de contourner ce problème et comment ?

    Merci d'avance

  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 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    On pourrait envisager d'utiliser le registre Windows pour y parvenir à condition d'avoir les droits nécessaires pour le modifier :
    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
    Option Explicit
     
    Dim WSHShell, fso, RegPath, FirstCall
    RegPath = "HKCU\Volatile Environment\ProgPath"
    FirstCall = "HKCU\Volatile Environment\TimeStamp"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set WSHShell = CreateObject("Wscript.Shell")
    On Error Resume Next ' Supprime l'erreur : Impossible d'ouvrir la clé.... pour la lecture.
    With WSHShell
       If .RegRead(FirstCall) = "" Then ' si la date de 1ère exécution n'existe pas :
          .RegWrite RegPath, fso.GetParentFolderName(Wscript.ScriptFullName) ' On inscrit chemin de l'exe(ou du Script)
          .RegWrite FirstCall, Now ' On inscrit la date de 1ère exécution dans le registre.
        End If
      MsgBox .RegRead(RegPath) ' Retour du chemin de l'exe
    End With
    Une fois le script lancé à partir d'un emplacement donné(1ère exécution), c'est cet emplacement qui sera toujours évoqué tant que la valeur HKCU\Volatile Environment\TimeStamp reste une chaîne non vide et ce quel que soit le nouveau dossier de lancement du Script.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Qu’utilise tu pour passer de vbs à exe.
    Si le compilateur est fait correctement, il devrait y avoir un moyen prévu de récupérer le chemin d'origine.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 18
    Par défaut
    Merci pour ces réponses.

    1- la solution de modifier la clé de registre est intéressante, mais pas possible (les droits "administrateur" sont bridés)
    2- compilateur = vbs_to_exe ; j'avais bien pensé à vérifier le paramétrage, mais le logiciel ne permet pas de gérer cette variable

  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 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    1- la solution de modifier la clé de registre est intéressante, mais pas possible (les droits "administrateur" sont bridés)
    On peut dans ce cas créer un fichier dans un dossier à choisir pour y écrire les infos au lieu de les mettre dans le registre :
    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
    Option Explicit
     
        Const ForReading = 1, ForWriting = 2, FileDest = "C:\Temp\Temoin.txt" ' exemple de chemin
        Dim fso, f
     
        Set fso = CreateObject("Scripting.FileSystemObject")
        If Not fso.FileExists(FileDest) Then 
           Set f = fso.OpenTextFile(FileDest, ForWriting, True)
           f.Write fso.GetParentFolderName(WScript.ScriptFullName)
           f.Close
           Set f = fso.OpenTextFile(FileDest, ForReading, False)
           MsgBox f.ReadAll
           f.Close
        Else
           Set f = fso.OpenTextFile(FileDest, ForReading, False)
           MsgBox f.ReadAll
           f.Close
        End If
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 18
    Par défaut
    Après réflexion (et vérification), la solution proposée ne résout pas mon problème.
    C'est la commande "objFSO.GetParentFolderName(WScript.ScriptFullName)" qui ne renvoie pas le résultat que j'attends. Si mon exe est stocké dans le répertoire "C:\Scripts", la commande ne renverra pas "C:\Scripts" mais le nom d'un répertoire temporaire d'exécution, du type "C:\User\Temp ..."

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

Discussions similaires

  1. Possiblité d'utiliser des noms de répertoires
    Par vicelard dans le forum Access
    Réponses: 4
    Dernier message: 27/10/2005, 11h04
  2. Lire le nom du répertoire courant !
    Par Feustine dans le forum Langage
    Réponses: 2
    Dernier message: 17/08/2005, 14h33
  3. nom de répertoire contenant des accents
    Par isa38 dans le forum Windows
    Réponses: 6
    Dernier message: 21/07/2005, 10h27
  4. Réponses: 2
    Dernier message: 08/07/2005, 10h40
  5. passage nom des contraintes de MPD au script de création BD
    Par marièmdiaw dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 14/01/2005, 13h18

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