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

  1. #1
    Membre à l'essai
    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
    Points : 10
    Points
    10
    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 415
    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 415
    Points : 5 805
    Points
    5 805
    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 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 184
    Points : 5 755
    Points
    5 755
    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 à l'essai
    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
    Points : 10
    Points
    10
    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 415
    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 415
    Points : 5 805
    Points
    5 805
    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 à l'essai
    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
    Points : 10
    Points
    10
    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 ..."

  7. #7
    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
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    MsgBox ChemSource(replace(WScript.ScriptFullName,WScript.ScriptName,""), WScript.ScriptName)
     
    Function ChemSource(Chem, Fich)
    Dim objShell, objFolder, strFileName
    Dim Msg
     
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace(Chem) 'branchement sur le dossier
    Set strFileName = objFolder.Items.Item(Fich) 'branchement sur le fichier
     
    ChemSource = Trim(objFolder.GetDetailsOf(strFileName, 177))
     
    Set strFileName = Nothing: Set objFolder = Nothing: Set objShell = Nothing
    End Function
    Si le script n'est pas dans le dossier temporaire mais dans le dossier de travail, que donne ce script une fois compilé avec vbs_to_exe?
    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 ← ← 👈

  8. #8
    Membre à l'essai
    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
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Le comportement est le même.
    Apparemment, le script se décompile dans le répertoire temporaire qui devient donc son répertoire "source".

  9. #9
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    bonjour,

    ton convertisseur c'est celui-ci ?
    et sinon, ton .exe accepte-t-il des paramètres en ligne de commande ?
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  10. #10
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    s'il s'agit bien du convertisseur visé par mon message précédent
    la réponse est dans la doc....... RTFM

    extrait :
    Environment variables


    These environment variables are automatically set at the start of your converted program

    v2eincfile(number) Returns, if available, the include filename
    v2eincfilecount Returns the number of files included
    v2eincfilepath Returns the include file path
    v2eprogramname Returns the full path name of your executable
    v2eprogramfilename Returns the file name of your executable
    v2eprogrampathname Returns the directory name of your executable
    v2eprogramshortname Returns the short DOS (8.3) path name of your executable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set WshShell = WScript.CreateObject("WScript.Shell")
    wscript.Echo WshShell.ExpandEnvironmentStrings("%v2eprogrampathname%")
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  11. #11
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 184
    Points : 5 755
    Points
    5 755
    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.
    J'attends toujours la réponse à ma question du 31/10/2017.

    Chercher sans savoir est une perte de temps, mais tu apporte déjà des réponses omen999

  12. #12
    Membre à l'essai
    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
    Points : 10
    Points
    10
    Par défaut
    Désolé, j'avais zappé le message du 31/10.

    Ta solution est la bonne en effet ; avec la doc, ça facilite les choses, mais je n'avais pas trouvé la doc dont tu parles (et ne l'ai toujours pas trouvée).
    Merci beaucoup.

  13. #13
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    mais je n'avais pas trouvé la doc dont tu parles (et ne l'ai toujours pas trouvée).
    dans le pack Vbs_To_Exe.zip téléchargé hier sur le site, je trouve pourtant bien un fichier help.chm...

    Chercher sans savoir est une perte de temps
    11 ans de forum m'ont appris que même fournir une bonne réponse n'assure pas la résolution du problème
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  14. #14
    Membre à l'essai
    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
    Points : 10
    Points
    10
    Par défaut
    Oups ...

    Merci pour le temps que tu y as consacré (et que je t'ai fait perdre)

+ 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