Convertisseur de chaine contenant des caractères accentués
Posté : 07 oct. 2009 12:48
Bonjour,
Voici un petit convertisseur de caractère sans prétention. Ce convertisseur n'a d'interet qu' intégré à un batch, autrement dit seul il ne servira pas à grand chose.
Ici l'idée est qu'à chaque fois que vous avez besoin d'utiliser une chaine contenant un ou plusieurs caractères accentués plutot que de faire la conversion vous même,
vous utilisiez ce convertisseur en l'appellant à l'aide la commande call.
Vous verrez que ce convertisseur prend tout son sens quand vous aurez à utiliser une chaine saisie par l'utilisateur.
un exemple d'utilisation ici: http://www.batcher.fr/forum/viewtopic.p ... 1250#p1250
Il s'utilise à l'aide d'un call depuis un autre batch. La chaine doit être passée en parametre lors du call.
La chaine convertie est en suite récupèrée à l'aide de la variable %newtring%. Exemple:
Call "d:\convertisseur.bat" "%MaChaine%"
Set MaChaine=%newtring%
modif du 07-10-2009: petite modif car j'ai posé la mauvaise version
Asser de blabla voici le code:
J'ai noté que sur certain PC une des lignes de code perd son dernier caractere donc la voici en dehor des balises code au cas ou !
set Cref= ‚ Š ˆ ‰ … ƒ ‡ “ ‹ Œ – —
A+
Voici un petit convertisseur de caractère sans prétention. Ce convertisseur n'a d'interet qu' intégré à un batch, autrement dit seul il ne servira pas à grand chose.
Ici l'idée est qu'à chaque fois que vous avez besoin d'utiliser une chaine contenant un ou plusieurs caractères accentués plutot que de faire la conversion vous même,
vous utilisiez ce convertisseur en l'appellant à l'aide la commande call.
Vous verrez que ce convertisseur prend tout son sens quand vous aurez à utiliser une chaine saisie par l'utilisateur.
un exemple d'utilisation ici: http://www.batcher.fr/forum/viewtopic.p ... 1250#p1250
Il s'utilise à l'aide d'un call depuis un autre batch. La chaine doit être passée en parametre lors du call.
La chaine convertie est en suite récupèrée à l'aide de la variable %newtring%. Exemple:
Call "d:\convertisseur.bat" "%MaChaine%"
Set MaChaine=%newtring%
modif du 07-10-2009: petite modif car j'ai posé la mauvaise version
Asser de blabla voici le code:
Code : Tout sélectionner
@echo off
rem -------------------------------------------------------
rem Convertisseur de chaine contenant des caractères accentués
rem cree par Bigfish alias 3ddI7IHd
rem le 07-10-09
rem V1.1
rem -------------------------------------------------------
if "%~1"=="" set /p chaine=Veuillez saisir la chaine … convertir:
if not "%~1"=="" set chaine=%~1
set Ctarget= é è ê ë à â ç ô ï î û ù ü
set Cref= ‚ Š ˆ ‰ … ƒ ‡ “ ‹ Œ – —
rem Ú Þ Û Ù Ó Ô þ ¶ ´ ¯ ¹ ¨ ³
:suivant
set test=
rem cette ligne permet de de stoper la boucle une fois que tout les caracteres on été vérifiés
if "%chaine%"=="" goto afficher
set car=%chaine:~0,1%
set chaine=%chaine:~1%
rem la variable car contient-elle un espace ?
if "%car%"==" " set newstring=%newstring%%car%&goto suivant
rem ici on regarde si la variable car contient un caractere special de la liste Cref
for /f %%i in ('echo %Cref% ^| findstr /i %car%') do set test=%%i
if "%test%"=="" set newstring=%newstring%%car%&goto suivant
rem si la variable car contient bien un caractere special on cherche le quel est-ce
set loop=1
:boucle
for /f "tokens=%loop% delims= " %%i in ('"echo %Cref%"') do set Cfound=%%i
if %Cfound%==%car% call :remplace %loop% & goto suivant
set /a loop=%loop%+1
if %loop% lss 14 goto boucle
set newstring=%newstring%%car%
goto suivant
:remplace
for /f "tokens=%1 delims= " %%d in ('"echo %Ctarget%"') do set newstring=%newstring%%%d
goto 3ddI7IHd
:afficher
Rem l'affichage ne se fera que si aucun parametre n'a été passé.
if "%~1"=="" (
echo %newstring%
pause > nul
exit
)
:3ddI7IHd
set Cref= ‚ Š ˆ ‰ … ƒ ‡ “ ‹ Œ – —
A+