Astuce CountCaractere.bat = tous & 1AuChoix !

Fermé
librequetucrois - Modifié par librequetucrois le 13/02/2012 à 09:42
bricomachin Messages postés 244 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 6 septembre 2016 - 8 nov. 2012 à 00:11
Bonjour à tous ; si cela vous sied, servez vous :
-
base source (mon code à partir d'une portion de code situé là) :
[batch] - Compter le nombre de caractére d'un chaîne - Forum des professionnels en informatique :
http://www.developpez.net/forums/d445492/general-developpement/programmation-systeme/windows/scripts-batch/batch-compter-nombre-caractere-chaine
-
mon code :
CountCaractere1220o20120213-082333UTC+0100CRC32=B648DD88.bat
1,19 Ko (1 220 octets)
1,19 Ko (1 220 octets)
CRC32: B648DD88
MD5: 743229B94B55D8741B39CFF8DA0C3266
SHA-1: 0F8BBD4CCE4D428578345B8F7B40317E42AE2EB0
SHA-256: 00C3B9AFA6E18DB42EB9485D57E179195432657EE8BE09CFA097AF4B77A42A91
-
Pour avoir un hash correcte :
Vérifiez le è = "Š" Š (S avec accent circonflexe à l'envers)
Vérifiez le é = "‚" ‚ (ce n'est pas une virgule (,), du moins ça ne marche pas)
Attention aux espaces pour les set /p après "? "
-
@echo off
cls

setlocal enabledelayedexpansion

:debutrestart

echo Start test count caractSre :
echo.

(set VrChn=)
(set VrCarac=)
(set VrCompt=-1)
(set VrComptSpace=0)
(set test2=)

set /p VrChn= Chaine (essayez juste des espaces) ? 

if /i "!VrChn!"=="" goto debutrestart

set /p VrCarac= CaractSre (un seul ou le premier ; 1 espace par d'faut si rien) ? 

if /i "!VrCarac!"=="" (set VrCarac= )& goto suite1
set VrCarac=!VrCarac:~0,1!
:suite1

:boucle

set /a VrCompt+=1
set test2=!VrChn:~%VrCompt%,1!

if /i "!test2!"=="!VrCarac!" set /a VrComptSpace+=1

if not "!test2!"=="" goto boucle

echo.
echo  La chaine contient !VrCompt! caractSres
echo.
if /i "!VrCarac!"==" " set VrCarac=espaces
echo  La chaine contient !VrComptSpace! caractSres "!VrCarac!" !
if "!VrComptSpace!"=="!VrCompt!" echo.
if "!VrComptSpace!"=="!VrCompt!" echo  Notez que la chaine entr'e ne contient que des "!VrCarac!" !

echo.
:bugresponse
set /p vsortir= Sortir O(ui)^|Y(es)/N(o)n) ? 
if /i "!vsortir!"=="" goto bugresponse
if /i "!vsortir!"=="O" goto fin
if /i "!vsortir!"=="Y" goto fin
if /i "!vsortir!"=="N" cls& goto debutrestart
goto bugresponse

:fin
Echo.
Pause
Endlocal
EXIT /B

-
(pas de ligne vide à la fin)
-
Il manque une astuce pour distinguer les minuscules des majuscules.
Avec un if /i et un if sans /i on peut trouver la différence numéraire.
Mais comment identifier le groupe DANS TOUS LES ALPHABETS.
Piste :
[Batch] Minuscules vers Majuscules - Forum des professionnels en informatique :
http://www.developpez.net/forums/d1165881/general-developpement/programmation-systeme/windows/scripts-batch/minuscules-vers-majuscules/
[Batch] Fonctions utiles pour des chaînes de caractères [Trucs & Astuces] - Forum des professionnels en informatique :
http://www.developpez.net/forums/d906307/general-developpement/programmation-systeme/windows/scripts-batch/fonctions-utiles-chaines-caracteres/
-
à vous lire ; merci
-
< config >Windows 7 / Firefox 3.6.26< / config >

1 réponse

bricomachin Messages postés 244 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 6 septembre 2016 133
Modifié par bricomachin le 8/11/2012 à 00:11
Astuce vraiment intéressante. Merci !

Bricomachin
0