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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [batch] longueur d'une chaine de char

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[batch] longueur d'une chaine de char

n°1180136
folsh
Posté le 20-08-2005 à 12:24:09  profilanswer
 

Bonjour à tout le monde,
 
Simple petite question (enfin j'espère)
 
Il y a t'il moyen de récupérer la longueur d'une chaine de caractère ?
 
Si oui comment ? :D
 
Merci


Message édité par folsh le 20-08-2005 à 12:24:21
mood
Publicité
Posté le 20-08-2005 à 12:24:09  profilanswer
 

n°1180161
olivthill
Posté le 20-08-2005 à 14:15:17  profilanswer
 

Dans quel langage ?
 
Sous Unix, il y a :

chaine_longueur = "$(expr length $une_chaine)"
ou
chaine_longueur = `echo $une_chaine | wc -c`

C'est du ksh, mais je suppose que la même chose existe en sh, ou bash.
En csh, ce sera surement un strlen().
 
Sous Windows, en cscript, c'est "len".
Etc.


Message édité par olivthill le 20-08-2005 à 14:18:04
n°1180207
folsh
Posté le 20-08-2005 à 15:52:22  profilanswer
 

j'utilise windows avec son petit bloc notes

n°1180492
folsh
Posté le 21-08-2005 à 08:51:46  profilanswer
 

J'ai continué à chercher, ms j'ai toujours rien trouvé, qql'un :(

n°1180523
olivthill
Posté le 21-08-2005 à 11:44:29  profilanswer
 

Citation :

j'utilise windows avec son petit bloc notes


Le "petit bloc notes" n'est pas un langage  :sweat:  
 
Comme ce message a été mis dans la section batch, je présume que tu veux obtenir la longueur d'une chaine de charactères dans un fichier de commande DOS (".bat" ).
Malheureusement, les instructions des fichiers .bat sont très peu nombreuses et assez limitées. Il n'en existe pas qui retourne la longueur d'une chaine de caractères.
 
Sous Windows Me, NT, XP (peut-etre aussi win95 et 98), à la place des ".bat", il existe maintenant les "scripts" qui sont des fichiers suffixés par ".vbs" ou "whs", et qui se lancent avec "cscript.exe". Les "scripts" contiennent l'instruction "Len" qui renvoie la longueur d'une chaine de caractères (comme je le disais précédemment).
 
Voici un script, appelons-le "strlen.vbs" qui affiche la longueur de la chaine "abc".

Wscript.Echo Len("abc" )

Pour le lancer, il faut taper "cscript strlen.vbs" dans une fenêtre DOS ou avec l'option du menu "Démarrer/Exécuter"
 
Cscript.exe accepte aussi des paramètres externes. Nous allons en tirer profit et réécrire notre script ainsi

Wscript.Echo Len(Wscript.Arguments.Item(0))


 
Maintenant, nous pouvons écrire un ".bat" qui utilise ce script. Par exemple :

set ma_chaine=course de chars
echo %ma_chaine%
cscript //Nologo strlen.vbs "%ma_chaine%"

CQFD  :)


Message édité par olivthill le 21-08-2005 à 11:46:20
n°1180623
folsh
Posté le 21-08-2005 à 14:30:02  profilanswer
 

ok, merci pr ton aide

n°1762229
bizu53
Posté le 20-07-2008 à 18:45:52  profilanswer
 

(Je sais bien que je déterre ce sujet de 3ans lol)
Si ça intéresse quelqu'un : il est bien possible de le faire en batch (et sans script).
Pour cela une simple boucle qui retire un par un les caractères de la chaîne en comptant combien de fois avant d'arriver à la chaîne vide.
 
@ECHO OFF
SET a=%1
SET longueur=0
 
:loop
IF "%a%"=="" GOTO endloop
SET a=%a:~0,-1%
SET /A longueur=%longueur%+1
GOTO loop
 
:endloop
ECHO %longueur%
 
(on peut aisément réutiliser cette valeur si besoin par exemple si l'argument doit avoir une taille minimale acceptée)
 
EDIT :
Mon bout de code ne fonctionne pas si l'argument est entre guillemets:
Remplacer la ligne
IF "%a%"=="" GOTO endloop
par
IF NOT DEFINED a GOTO endloop
Mais ça ajoute 2 au résultat (je ne sais pas comment tester si la chaîne est entre guillemets ou pas, je n'ai pas cherché j'en ai pas besoin dans mon cas les guillemets sont tjr là)


Message édité par bizu53 le 20-07-2008 à 19:46:02
n°1762332
blastkille​r
Posté le 21-07-2008 à 04:17:13  profilanswer
 

set a=%~1
et hop plus de guillement...
 

Citation :

Malheureusement, les instructions des fichiers .bat sont très peu nombreuses et assez limitées. Il n'en existe pas qui retourne la longueur d'une chaine de caractères.


J'ai envie de dire : ou pas ! Le batch est beaucoup plus puissant qu'on ne le pense...


Message édité par blastkiller le 21-07-2008 à 04:19:04

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

  [batch] longueur d'une chaine de char

 

Sujets relatifs
Batch FTP => création de rep[Shell] Traitement de fichier - chaine de caractères
Requête SQL pour remplacer une partie de chaine...Troncation à droite de la chaine de données
Convertir un char en int ?![Batch] Boucle sur plusieurs fichiers - RESOLU
manipulation de chaine en requete SQL.Convertir une chaine en hex ?
[Batch]Ouvrir dossier, effectuer action puis fermerprobleme de chaine de caractère ( photo inside)
Plus de sujets relatifs à : [batch] longueur d'une chaine de char


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