Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1070 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  faire entrer dans une variable le nombre de carractere d une autre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

faire entrer dans une variable le nombre de carractere d une autre

n°1373460
payes
Posté le 23-05-2006 à 18:21:35  profilanswer
 

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 ;)

mood
Publicité
Posté le 23-05-2006 à 18:21:35  profilanswer
 

n°1373472
wackevat
Posté le 23-05-2006 à 18:41:41  profilanswer
 

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

n°1373511
payes
Posté le 23-05-2006 à 19:22:01  profilanswer
 

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 ;)

n°1373590
wackevat
Posté le 23-05-2006 à 21:00:25  profilanswer
 

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 :
  1. if not "%VAR:~4,1%" == "" (
  2.   if "%VAR:~5,1%" == "" (
  3.     echo %VAR% est de longueur 5
  4.   )
  5. )


 
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.

n°1373625
payes
Posté le 23-05-2006 à 22:11:44  profilanswer
 

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 ;)

n°1374195
payes
Posté le 24-05-2006 à 14:56:48  profilanswer
 

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 ;)

n°1374452
wackevat
Posté le 24-05-2006 à 17:37:24  profilanswer
 

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 :D

n°1374983
payes
Posté le 25-05-2006 à 17:16:28  profilanswer
 

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 ... :d
dsl pour tout ce derangement et merci beaucoup pour ton aide nglechau ;)

n°1375016
payes
Posté le 25-05-2006 à 18:43:01  profilanswer
 

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 :)

n°1375138
wackevat
Posté le 25-05-2006 à 21:46:39  profilanswer
 

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 :D


Message édité par wackevat le 25-05-2006 à 21:48:15
mood
Publicité
Posté le 25-05-2006 à 21:46:39  profilanswer
 

n°1375211
payes
Posté le 25-05-2006 à 23:23:41  profilanswer
 

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 ;)

n°1375221
wackevat
Posté le 25-05-2006 à 23:30:39  profilanswer
 

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 ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  faire entrer dans une variable le nombre de carractere d une autre

 

Sujets relatifs
nombre de lignes et de colonnes d'un rangeRécuperer la valeur d'une variable
Récupere la valeur d'une variableprob communication formulaire popup page appelante variable php
variable php dans popup javascriptSéparer les données d'une variable
Récuperer resultat javascript dans une variable phpComment ortographié une variable de type chexkbox dans Mysql ?
Variable ASP depuis Javascript[python]Validation champ entry avec touche entrer
Plus de sujets relatifs à : faire entrer dans une variable le nombre de carractere d une autre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR