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

Windows Discussion :

Création .bat sous Windows 2000


Sujet :

Windows

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Création .bat sous Windows 2000
    Bonjour,

    J'aurais besoin de récupérer le chemin d'installation d'un logiciel sous Windows 2000.
    Comme la variable d'environnement PATH le contient, j'aimerais l'exploiter dans un .bat.
    Ne connaissant pas suffisamment le langage d'écriture d'un .bat, pouvez-vous me donner les instructions pour extraire une chaîne de caractères de la variable PATH (le séparateur est le contenant une chaîne précise (dans mon cas : C++Test) ?
    Ensuite, j'exploiterai cette nouvelle chaîne de caractères, qui est en fait un sous-ensembre du contenu de la variable PATH.

    Merci par avance
    Josiane

  2. #2
    Inactif Avatar de Lorponos
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 243
    Points : 85
    Points
    85
    Par défaut
    Salut josianedenis
    Le path se trouve dans le registre, ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Lorponos
    Le path se trouve dans le registre, ici:
    Oui mais avec cette approche on ne peux pas le traiter dans un batch sans outils additionnels.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @echo on
     rem récupére les nom de chemin uniquement
    For /F "tokens=1,2 delims==" %%A in ('path') do set Parse=%%B
     rem remplace les occurences de ; par *
    set new=%parse:;=*%
     rem ne fonctionne pas
     rem For /f "delims=;" %%I in (%Parse%) do echo %%I
     rem ne fonctionne pas mieux %-)
    For /f "delims=*" %%I in (%new%) do echo %%I
     rem une autre approche mais ne fonctionne pas vraiment 
     rem For /d  %%I in (%path%) do echo %%~$PATH:I
    J'ai regardé qq temps, à prioris ces instructions devraient fonctionner. mais il y a peut être qq chose qui m'a échappé.
    [edit]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For %I in (%path%) do echo %I
    Parse bien le path mais tronque les chemins sur les espaces

  4. #4
    Inactif Avatar de Lorponos
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 243
    Points : 85
    Points
    85
    Par défaut
    Pour quoi remplacer les ; (points virgules) par des * (astérixs) ?

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Lorponos
    Pour quoi remplacer les ; (points virgules) par des * (astérisque) ?
    Dans mes essais avec la boucle For /F le caractère ; est remplacé par des espaces. L'espace pouvant être utilisé dans un nom de fichier j'ai pris la caractère * pour délimiter les chemins mais sans succés.

  6. #6
    Inactif Avatar de Lorponos
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 243
    Points : 85
    Points
    85
    Par défaut
    Le caractére * sert de joker normalement en batch, s'est plus pratique d'utiliser ; comme délimitateur.

  7. #7
    Inactif Avatar de Lorponos
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 243
    Points : 85
    Points
    85
    Par défaut
    Donc avec ton code Laurent il faudrait que Josianedenis sache si le chemin de l'application donc il veut extraire le chemin et le troisième chemin ou le deuxième ou autre référencer dans la path, or selon les machines sur lequel serat exécuté le batch le path ne serat pas toujours pareille, enfin ça peut être une solution, j'ai un peu amélioré le code selon moi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For /f "tokens=1,2 delims==" %%i in ('Path') do echo %%j & Set ChmsPath=%%j
    For /f "tokens=2 delims=;" %%i in (%ChmsPath%) do echo %%j
    Mais il reste aparament une erreur dans la deuxième boucle, si quelqu'un peut voir ça ?
    Le système ne peut trouver le fichier C:\WINDOWS\system32.
    On dirait que la boucle essay de trouver le premier chemin du path en ten que fichier.

  8. #8
    Inactif Avatar de Lorponos
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 243
    Points : 85
    Points
    85
    Par défaut
    Par contre cette boucle qu'a fait laurent, sépare les chemins sur plusieurs lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For /d  %%I in (%path%) do echo %%~$PATH:I

  9. #9
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Lorponos
    Le caractére * sert de joker normalement en batch, s'est plus pratique d'utiliser ; comme délimiteur.
    Pour l'interpréteur de commande oui mais dans ce contexte d'analyse on traite une chaîne de caractères.

    Ce que fait ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For /f "tokens=2 delims=;" %%i in (%ChmsPath%) do echo %%j
    D'ou le message d'erreur. Si tu utilises le commutateur /D l'erreur n'existe plus car on manipule bien une entrée de répertoire.

    En revanche ceci ne provoque plus d'erreur et ce n'est pas nécessaire d'utiliser tokens car on veut toutes les occurences :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For /f "delims=;" %%i in ('echo %ChmsPath%') do echo %%i
    Mais l'analyse ne se fait q'une seule fois

  10. #10
    Inactif Avatar de Lorponos
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 243
    Points : 85
    Points
    85
    Par défaut
    Mais le tokens de cette ligne été censé récupérer le chemin de l'application souhaiter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For /f "tokens=1,2,3,4 delims=;" %%i in ('echo %ChmsPath%') do echo.&echo %%k
    ********************

    Pour cette ligne si je mets le /d comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For /d "tokens=1,2,3,4 delims=;" %%i in (%ChmsPath%) do echo.&echo %%k
    Le batch plante.

    ********************

    Et puis ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For /f "tokens=1,2,3,4 delims=;" %%i in ('echo %ChmsPath%') do echo.&echo %%k
    Affiche ceci: Commande ECHO désactivée

  11. #11
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Lorponos
    Mais le tokens de cette ligne été censé récupérer le chemin de l'application souhaiter:
    C'est pas marqué dans les specs
    Citation Envoyé par Lorponos
    Le batch plante.
    Tu combines la syntaxe du commutateur /F et /D, c'est pas possible ...
    Citation Envoyé par Lorponos
    Affiche ceci: Commande ECHO désactivée
    A prioris ta suite d'instruction ne renvoie aucune occurence, donc Echo est exécuté sans paramètre.

  12. #12
    Inactif Avatar de Lorponos
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 243
    Points : 85
    Points
    85
    Par défaut
    Qu'est ce que c'est les specs ?

    Ben je n'ai pas combiner les commutateurs /F et /D, j'ai juste remplacer f par d, tu as dit:
    Si tu utilises le commutateur /D l'erreur n'existe plus car on manipule bien une entrée de répertoire.
    j'ai mal compris sûrement, que voulai tu dire exactement ?


    Ceci remplace les points virgules par des espaces:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     For /f "delims=;" %%i in ('echo %ChmsPath%') do echo %%i

  13. #13
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Lorponos
    Qu'est ce que c'est les specs ?
    Abréviation commune pour les spécifications fonctionnelles ou technique.
    Citation Envoyé par Lorponos
    j'ai mal compris sûrement
    Oui je pense, /D ne connait pas les paramètres "tokens..."

  14. #14
    Inactif Avatar de Lorponos
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 243
    Points : 85
    Points
    85
    Par défaut
    Merci pour ses renseignements

Discussions similaires

  1. Lenteur réseaux sous windows 2000 pro et serveur
    Par FilipeVV dans le forum Windows Serveur
    Réponses: 8
    Dernier message: 31/05/2006, 13h42
  2. Oracle et l'HyperThreading sous Windows 2000
    Par Aeternus dans le forum Oracle
    Réponses: 4
    Dernier message: 08/03/2005, 11h06
  3. Installation Oracle 10g sous Windows 2000
    Par Jeff206 dans le forum Oracle
    Réponses: 6
    Dernier message: 24/08/2004, 15h51
  4. [Débutant] Problème d'installation sous Windows 2000
    Par bavmorda dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 04/08/2004, 16h28
  5. LoadLibrary avec C++ Builder 6 sous Windows 2000
    Par tgempp dans le forum C++Builder
    Réponses: 15
    Dernier message: 13/11/2003, 19h19

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