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

Scripts/Batch Discussion :

Problème avec la variable %userprofile% lorsque un nom de profile utilisateur contient un espace [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre extrêmement actif Avatar de OrthodoxWindows
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2021
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2021
    Messages : 1 299
    Par défaut Problème avec la variable %userprofile% lorsque un nom de profile utilisateur contient un espace
    Bonjour à tous,

    J'ai un problème avec les noms d'utilisateur contenant des espaces.
    Je m'explique : j'ai écrit un script batch qui à besoin d'ouvrir un programme contenu dans chaque profil utilisateur. Pour ce faire, j'utilise la variable %userprofile%. Quant le dossier du profil utilisateur est un nom sans espaces, cela fonctionne sans problème. Mais quand le nom contient un espace, Windows ne trouve pas le programme.

    Une solution est de remplacer la variable par le nom DOS du profil. Le problème, c'est que je dois absolument utiliser la variable.
    Une deuxième solution est d'ajouter des guilmets "" ; le problème, c'est que cela ouvre une fenêtre de commande avec le chemin du programme au lieu d'ouvrir le programme.

    Existe-t-il une solution à ce problème ? J'ai pensé à un paramètre qui remplacerais automatiquement le nom long par le nom DOS court à partir de la variable, mais je ne sais pas si c'est possible.

    Merci.

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Bonjour,
    Je préconise les double-quotes, si tu montres ton code je pourrais t'aider plus efficacement.
    N'oublie pas d'utiliser les balises de code.

  3. #3
    Membre extrêmement actif Avatar de OrthodoxWindows
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2021
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2021
    Messages : 1 299
    Par défaut
    Citation Envoyé par barnabe0057 Voir le message
    Bonjour,
    Je préconise les double-quotes, si tu montres ton code je pourrais t'aider plus efficacement.
    N'oublie pas d'utiliser les balises de code.
    Je n'ai pas le temps de montrer le code maintenant, mais j'aurais le temps de le montrer tout à l'heure.

    Merci pour l'intérêt apporté à mon problème.

  4. #4
    Membre extrêmement actif Avatar de OrthodoxWindows
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2021
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2021
    Messages : 1 299
    Par défaut
    Voici donc le code qui pose problème :

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    (start %userprofile%\TSS\BasicTheme\BasicThemer2.exe)

    Cela fonctionne parfaitement quand le dossier du profil utilisateur ne contient pas d'espaces, mais cela ne fonctionne plus quand le dossier contient un ou plusieurs espaces.

    J'ai essayé les guillemets, cela ouvre le programme dans une console. J'ai essayé les guillemets uniquement sur la variable, cela ne fonctionne pas. J'ai essayé les doubles-guillemets, cela empêche Windows de trouver le chemin. Enfin, je ne peux pas utiliser le nom DOS court, car j'ai besoin d'utiliser la variable d'environnement (qui est générique).

    Bizarrement, cette partie du code, pourtant plus complexe, fonctionne parfaitement quant j'ajoute les guillemets :

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if exist "%userprofile%"\tss\basic\BasicThemer2.exe (echo Le thème basic est déjà activé) else (ren "%userprofile%\tss\basic\BasicThemer2_old.exe" BasicThemer2.exe
    echo Le thème basic a été activé)

    Seul la commande start semble poser problème. Pour les autre, les guillemets (ou les quotes, si cela se nomme des quotes) semble résoudre le problème.

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Essaie comme ceci :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    start "" /D "%USERPROFILE%\TSS\BasicTheme" BasicThemer2.exe


    Sinon tu peux aussi essayer sans la commande START, comme cela :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    "%userprofile%\TSS\BasicTheme\BasicThemer2.exe"


    Est-ce normal que le chemin est différent dans les 2 parties de code que tu nous montres ? Une fois c'est basic et l'autre c'est BasicTheme.

  6. #6
    Membre extrêmement actif Avatar de OrthodoxWindows
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2021
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2021
    Messages : 1 299
    Par défaut
    Citation Envoyé par barnabe0057 Voir le message
    Essaie comme ceci :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    start "" /D "%USERPROFILE%\TSS\BasicTheme" BasicThemer2.exe
    Cela fonctionne !! Merci beaucoup !

    Sinon tu peux aussi essayer sans la commande START, comme cela :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    "%userprofile%\TSS\BasicTheme\BasicThemer2.exe"
    Cela fonctionne aussi, mais ça fige le script indéfiniment.

    Est-ce normal que le chemin est différent dans les 2 parties de code que tu nous montres ? Une fois c'est basic et l'autre c'est BasicTheme.
    Non, c'est une faute d'étourderie (probablement à force de modifier le script constamment), mais j'ai essayer avec le nom correct, cela n'enlève rien au problème.

    Merci encore !

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

Discussions similaires

  1. [xmlrad]problème avec la variable session
    Par ekmule dans le forum XMLRAD
    Réponses: 5
    Dernier message: 22/02/2006, 13h22
  2. Problèmes avec les variables et les unités
    Par christoufe dans le forum EDI
    Réponses: 2
    Dernier message: 22/01/2006, 16h22
  3. problème avec un script de generation de nom de login
    Par black_code dans le forum Langage
    Réponses: 2
    Dernier message: 04/08/2005, 13h51
  4. Problèmes avec les variables final
    Par casolaro dans le forum Langage
    Réponses: 7
    Dernier message: 09/12/2004, 14h29
  5. Réponses: 6
    Dernier message: 28/05/2004, 09h39

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