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à.