Bonjour, quelqu’un pourrait-il me dire ce qui ne va pas dans cette commande :
1 2 3 4 5 6 7
| echo voulez- vous faire un autre test (Y/N/F) ?
echo.
set /p rep=réponse ?
echo.
echo %rep%|FINDSTR /r ^[0-9]*>nul / / elle ne fonctionne pas.
if ERRORLEVEL 1 goto message
If NOT ERRORLEVEL 1 goto verif |
Je tente tout simplement d’adapter le code d’extinction d’une machine contenu dans un fichier bat, j’ai des difficultés avec cette commande :
echo %rep%|FINDSTR /r [^0-9]*>nul
dans le fichier original c’est comme ça :
1 2 3 4 5 6
| SET /P delai=dans combien de temps voulez-vous arrêter la machine ?
Echo %delai%|findstr /r ‟[^0-9]” > nul
If ERRORLEVEL 1 goto TempsValide
Echo erreur: vous devez saisir un entier valide
Echo.
If not ERRORLEVEL 1 goto Suite |
Et comme explication il dit, je cite :
{
« Analysons ensemble :
echo %delai%|findstr /r "[^0-9]" > nul
Prenons la première partie :Comme nous l'avons vu plus haut, echo sert tout simplement à afficher le contenu de la variable "delai".
Le caractère "|", appelé "pipe" ou "tube", que j'utilise, permet d'utiliser en tant qu'entrée de la commande findstr, le résultat de la commande echo, à savoir la saisie de l'utilisateur.
Passons à la deuxième partie, déjà plus compliquée : findstr /r "[^0-9]"
Nous n'avons pas encore vu cette commande (Findstr). Elle permet en fait de rechercher des chaînes de caractères dans un fichier ou tout autre chaine de caractères. Le résultat de la recherche est ensuite récupérable grâce à la variable système "ERRORLEVEL".
"[^0-9]" est une expression régulière. Le caractère ^ indique le début de la chaîne.
"0-9" indique qu'il faut pouvoir trouver dans la variable delai seulement des caractères compris entre 0 et 9.
La dernière partie : > nul
Elle permet grâce au caractère ">" de rediriger dans un fichier dont le nom est saisi à droite, le résultat récupéré à partir des commandes de gauche.
Ici, nous renvoyons le résultat vers le mot clé "nul", ce qui a pour effet de ne pas créer de fichier. La redirection du résultat permet d'annuler l'affichage de celui-ci sur votre fenêtre.
En clair, cela permet donc de vérifier que la saisie de l'utilisateur est bien un entier puis conserve le résultat de la recherche dans la variable ERRORLEVEL que nous utilisons juste après.»
}
Or dans l’aide de la commande FINDSTR il est bien dit que la regex [^0-9] est une classe inverse, par conséquent elle affiche tout caractère n’appartenant pas au jeu.
Quelqu’un peut-il m’expliquer ce que je dois comprendre ?
Partager