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 :

Remplacer le caractère étoile dans une chaine


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut Remplacer le caractère étoile dans une chaine
    Bonjour à tous,

    voici mon problème :

    Je demande à l'utilisateur une saisie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ECHO Votre choix :
    SET SAISIE /p=""
    Ici l'utilisateur a la possibilité d'entrer ce qu'il veut bien sur.
    Le but est de le faire entrer un masque de fichier :

    *.csv
    toto.*
    *a.tmp
    ...
    Toutefois je dois controler qu'il n'entre pas
    *.*
    ça fonctionne en vérifiant avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    IF "%SAISIE%"=="*.*" (
        CLS
        ECHO Saisir "%SAISIE%" c'est le mal !
        PAUSE
    )
    Mon soucis est le suivant :

    Si l'utilisateur entre **.* (ou *.** ou ******.*, etc), ça donne le même masque que *.*.
    J'ai donc essayé de traiter la saisie avant vérification en remplaçant ** par *, mais je n'y arrive pas.

    J'ai testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SET SAISIE=%SAISIE:**=*%
    SET SAISIE=%SAISIE:\*\*=\*%
    SET SAISIE=%SAISIE:\*\*=*%
    SET SAISIE=%SAISIE:**=\*%
    ...
    Rien n'y fait, ça ne fonctionne pas.


    J'avais aussi essayé de controler via une expression régulière avec une syntaxe du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ECHO "%SAISIE%"|FINDSTR /r "^[*]*[.][*]*$">nul
    Puis en controlant ERRORLEVEL, mais ça ne semble pas fonctionner (ERRORLEVEL=1 dans tous les cas).
    Est-ce que mon expression régulière était mauvaise ?
    Visiblement non, en la testant ici ça passe.
    Est-ce que ma syntaxe était fausse ?
    Je pencherais plutôt vers ça.


    Je vous remercie d'avance pour votre aide

    EDIT :
    Expression régulière fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ECHO "%SAISIE%"|FINDSTR /r "^[\"][*]*[.][*]*[\"]$">nul
    Je ne suis pas encore totalement habitué au MS-DOS et j'avais un peu omis le fait qu'il compte mes " comme faisant partie de ma chaine de caractères ...

    Je vais utiliser cette solution qui est en plus plus propre et marquer le sujet comme résolu, mais j'aimerais tout de même savoir comment faire pour remplacer des * dans une chaine si quelqu'un passe par là.

  2. #2
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    salut,

    Citation Envoyé par asmduty Voir le message
    mais j'aimerais tout de même savoir comment faire pour remplacer des * dans une chaine si quelqu'un passe par là.
    si tu mets dans ce forum la chaîne "asterisque" ça te sortira ce post traitant ta demande

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Merci pour ta réponse, je pensais à chercher avec étoile mais pas astérisque =/

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

Discussions similaires

  1. [Batch] comment remplacer le caractère asterisque '*' dans une chaine:
    Par I'm_HERE dans le forum Scripts/Batch
    Réponses: 22
    Dernier message: 26/06/2013, 17h59
  2. Remplacer des caractères spéciaux dans une chaine
    Par enzostar dans le forum Langage
    Réponses: 5
    Dernier message: 29/09/2012, 23h16
  3. Réponses: 1
    Dernier message: 23/12/2009, 20h55
  4. Remplacer caractères spéciaux dans une chaine
    Par Peyothe dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/08/2009, 13h32
  5. Remplacer les caractères accentués dans une chaine
    Par shaun_the_sheep dans le forum Général Java
    Réponses: 5
    Dernier message: 07/05/2008, 10h41

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