Remplacer le caractère étoile dans une chaine
Bonjour à tous,
voici mon problème :
Je demande à l'utilisateur une saisie :
Code:
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 :
Citation:
*.csv
toto.*
*a.tmp
...
Toutefois je dois controler qu'il n'entre pas
ça fonctionne en vérifiant avec
Code:
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:
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:
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:
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à.