faire entrer dans une variable le nombre de carractere d une autre - Shell/Batch - Programmation
Marsh Posté le 23-05-2006 à 18:41:41
Ce n'est pas possible en batch.
Il est juste possible de vérifier si une chaîne est de longueur n, où n est prédéfinie par un chiffre précis (et pas variable).
Marsh Posté le 23-05-2006 à 19:22:01
a ok mince ... :s merci de ta reponse
et comment je pourrai faire alors pour "compter" le nombre de caractere ?
je peut genre faire :
echo %a% >> C:\nombre carractere.txt
et ensuite avec un commande for reprendre la longueur de la chaine et la mettre dans une autre variable ?
et apres comparer ma variable a un nombre genre 3 ?
merci encore de ta reponse
Marsh Posté le 23-05-2006 à 21:00:25
payes a écrit : et comment je pourrai faire alors pour "compter" le nombre de caractere ? |
Justement, comme j'avais dit, tu ne peux pas, ou du moins je ne sais pas faire
On peut juste vérifier si la chaîne a 5 caractères par exemple, c'est-à-dire :
Code :
|
mais on ne peut pas remplacer 5 par une variable. Ca ne marche qu'avec un chiffre concret et ne marche pas avec la valeur d'une variable.
Marsh Posté le 23-05-2006 à 22:11:44
okai , je vais me debrouiller avec ca , merci pour le script
merci beaucoup , je test tout ca et jte dit si ca a marcher
bonne soirer
Marsh Posté le 24-05-2006 à 14:56:48
eu par contre escuse mais j ai un pb au niveau du script
quand je met
@echo off
set a=0
cls
set /p a=:
if not "%a:~4,1%" == "5" (
if "%a:~5,1%" == "5" (
echo %a% est de longueur 5
) else echo %a% = pas 5
)
pause>>nul
il me met lorsque je rentre 5 : que cela n est pas egal a 5
et lorsque je rentre 2 par exmple , il met la meme .
j ai tester different truc, du genre enlever le chiffre dans les "" , le mettre ds les premiers mais pas dans les seconds etc mais je n'ai pas trouver d'ou venait mon erreur , pourrait m'indiquer ou se trouve l'erreur plz ?
merci d'avance
Marsh Posté le 24-05-2006 à 17:37:24
Tu as mal compris la signification de %VAR:~x,y%
Regarde l'aide de
set
et revois mon code du dessus.
Rappel : on est en train de vérifier la longueur d'une chaîne
Marsh Posté le 25-05-2006 à 17:16:28
a voui okai , desoler j'avais mal compris ^^
ton code veut dire : dans la variable VAR lorsque je m'ecarte de 4 carractere et que je prend le dernier , si il est egal a rien ( les "" ) et si lorsque je mecarte de 5 et que je prend le dernier carractere , si il est egal a rien lui aussi alors afficher la chaine est de 5 carracteres ?
et en effet ca marche tres bien ...
dsl pour tout ce derangement et merci beaucoup pour ton aide nglechau
Marsh Posté le 25-05-2006 à 18:43:01
par contre , j ai un gros soucis ca fait 45 minutes que je suis en train de galerer et je vien de decouvrir qu en fait mon script doit commporter une faille
set m1=0
set /p m1=rentrez le mot
if not "%m1:~0,1%" == "" (
if "%m1:~1,1%" == "" (
goto m1e1
)
)
if not "%mc1:~1,1%" == "" (
if "%mc1:~2,1%" == "" (
goto m1e2
)
)
if not "%mc1:~2,1%" == "" (
if "%mc1:~3,1%" == "" (
goto m1e3
)
)
if not "%m1:~3,1%" == "" (
if "%m1:~4,1%" == "" (
goto m1e4
)
)
if not "%m1:~4,1%" == "" (
if "%m1:~5,1%" == "" (
goto m1e5
)
)
if not "%m1:~5,1%" == "" (
if "%m1:~6,1%" == "" (
goto m1e6
)
)
:m1e1
echo 1
goto l
:m1e2
echo 2
goto l
:m1e3
echo 3
goto l
etc
le pb c est que la il m'affiche tout le temps 1 meme si m1=ton (soit 3 carractere ) est ce que quelqu un pourrait m'aider pour que des qu il ai verifier que m1 n est pas egal a 1 carractere , il verifie qu il soit egal a 2 et apres 3 , 4 etc svp ?
merci
Marsh Posté le 25-05-2006 à 21:46:39
Après le dernier test, tu dois sauter le bloc des procédures. C'est-à-dire
---
.........
.........
if not "%m1:~5,1%" == "" (
if "%m1:~6,1%" == "" (
goto m1e6
)
)
goto end
:mxex
.......
.......
:end
---
N'oublie pas que sans les goto, les commandes sont appelées l'une après l'autre dans l'ordre qu'elles sont écrites dans le script.
J'imagine que tu vas optimiser ton code quand ça aura fonctionné correctement, parce que là pour le moment, c'est un peu rédondant
PS : et il y a quelques coquilles dans le nom des variables : faute de frappe je suppose
Marsh Posté le 25-05-2006 à 23:23:41
lol voui , merci pour les erreurs , jlé avait pas vu par contre quand tu dit optimiser mon code , tu pourrais etre plus precis stp , je peut le rendre plus simple ?
merci
Marsh Posté le 25-05-2006 à 23:30:39
Pour l'optimisation, observe : dans ton code, tu as :
if "%m1:~x,1%" == ""
puis plus tard :
if not "%m1:~x,1%" == ""
donc ça fait une opération de plus. Alors qu'un
else
suffirait. En gros, compacter/combiner tes comparaisons quoi
Marsh Posté le 23-05-2006 à 18:21:35
bonjour a tous
voila comme cela est dit dans le titre , j'aimerai bien savoir comment je pourrai faire pour "compter" le nombre de carracteres present dans une variable.
exemple :
@echo off
set a=0
set /P a=entrez un mot
if %a%==5 echo votre mot contient 5 carracteres.
j ai fait une recherche qui n'a pas ete concluante , escusez moi si j ai mal cherché et dans ce cas pourriez vous svp m'indiquer le lien de ce topic ? merci
merci a vous tous d'avance
bonne soirer