Il y a actuellement 129 visiteurs
Vendredi 06 Août 2021
accueilactualitésdossierscomparer les prixtélécharger gratuitement vos logicielsoffres d'emploiforum informatique
Connexion
Créer un compte

Remplacer une lettre par une chaîne de caractère en batch

Besoin d'aide pour configurer un serveur ? Vous souhaitez obtenir des conseils pour référencer votre site ? Un petit souci pour accéder à votre FTP ? Des soucis de programmation en PHP / ASP / HTML / XHTML / XML / XSLT / CSS / ReactJS / AngularJS / VueJS / CGI / PERL / C / MySQL / PostgreSQL ??? Nous avons peut-être la solution dans ce forum ...

Remplacer une lettre par une chaîne de caractère en batch

Message le 04 Jan 2012 20:23

Voilà, je voudrais rentrer un texte dans une variable, puis que chaque lettre de ce texte soit changer par une chaîne de caractère alpha-numérique, par exemple, remplacer les "a" par "-ab12" et les "b" par "-ba21"(au hasard), voilà ce que j'ai comme code :

Code: Tout sélectionner
@echo off
set /p text=Texte à changer : 
set text=%text:a=-ab12%
set text=%text:b=-ba21%
echo %text%
pause > nul


Mais j'ai un petit problème, si j'exécute ce batch et que je tape "a", forcément, ça affiche non pas "-ab12" mais "-a-ba2112.

Ma théorie, et je pense qu'elle est juste puisque pas très complexe, c'est qu'en fait, le programme fait bien ce que je lui demande, mais sur ce coup-là, ça ne m'arrange pas, c'est-à-dire qu'il transforme bien le "a" en "-ab12", mais ceci ne s'affiche pas puisque le "b" contenu dedans est, lui, remplacé par "-ba21", quelqu'un a-t-il une solution à ce problème ?

Merci d'avance.
mlkgiosn
Apprenti(e) Expert(e)
Apprenti(e) Expert(e)
 
Messages: 394
Inscription: 09 Avr 2010 13:54
 


Re: Remplacer une lettre par une chaîne de caractère en batc

Message le 05 Jan 2012 22:18

C'est impossible ?
mlkgiosn
Apprenti(e) Expert(e)
Apprenti(e) Expert(e)
 
Messages: 394
Inscription: 09 Avr 2010 13:54
 

Re: Remplacer une lettre par une chaîne de caractère en batc

Message le 05 Jan 2012 22:29

Bonsoir
mlkgiosn a écrit:C'est impossible ?


je n'en sais rien (ça fait longtemps que je n'ai pas fait de fichier bat complexe et ça ne me revient pas "comme ça") mais il faut être patient car, il n'y a que des bénévole ici...avec, heureusement, une vie en dehors.

il n'est pas convenable de faire une relance si vite (24 voir 48H serait plus correct :wink: )
La sagesse est une montagne dont la base est confondue avec le sommet
...Celui qui a été lumière jamais ne disparait.. il reste lumière, sentinelle dans l'éternité, son aura bienveillante nous montre le chemin.
Avatar de l'utilisateur
EinsteinZero
Moderateur
Moderateur
 
Messages: 17291
Inscription: 27 Déc 2009 16:22
Localisation: Normandie
 

Re: Remplacer une lettre par une chaîne de caractère en batc

Message le 06 Jan 2012 10:46

Code: Tout sélectionner
@echo off
set /p text=Texte à changer :
set text=%text:a=-ab12%
if %errorlevel%==0 GOTO SUITE
set text=%text:b=-ba21%
:SUITE
echo %text%
pause > nul


Voilà...
Libérez-vous : http://www.debian.org
Nobody knows what sysadmin does... until he stops doing it
Avatar de l'utilisateur
CaSa
PC-Infopraticien
PC-Infopraticien
 
Messages: 8978
Inscription: 13 Mai 2003 16:32
Localisation: Sisteron... et jamais loin d'une Debian
 

Re: Remplacer une lettre par une chaîne de caractère en batc

Message le 06 Jan 2012 14:04

CaSa a écrit:
Code: Tout sélectionner
@echo off
set /p text=Texte à changer :
set text=%text:a=-ab12%
if %errorlevel%==0 GOTO SUITE
set text=%text:b=-ba21%
:SUITE
echo %text%
pause > nul


Voilà...

Merci, le "a" devient bien "-ab12", mais si je tape "b", ça me dit "commande ECHO désactivé" si j'utilise "echo %text:~a,b%" au lieu de "echo %text%", ou alors si je garde seulement "echo %text%", le "b" reste un "b".
mlkgiosn
Apprenti(e) Expert(e)
Apprenti(e) Expert(e)
 
Messages: 394
Inscription: 09 Avr 2010 13:54
 

Re: Remplacer une lettre par une chaîne de caractère en batc

Message le 06 Jan 2012 17:07

Ha oui effectivement... je croyais que l'errorlevel était géré dans le SET, mais pas du tout. Mon test a été un peu rapide.

As-tu la possibilité d'utiliser un programme annexe comme grep que tu mettrais dans le C:\windows par exemple (pour le path) ?
Si c'est le cas, c'est 10 fois plus simple :
Code: Tout sélectionner
@echo off
set /p text=Texte à changer :
echo %text% > var.txt

grep "a" var.txt
if %errorlevel%==0 set text=%text:a=-ab12%&&GOTO SUITE
grep "b" var.txt
if %errorlevel%==0 set text=%text:b=-ba21%%&&GOTO SUITE
:SUITE
del var.txt
echo %text%
pause > nul

résultat :
Code: Tout sélectionner
C:\>test
Texte Ó changer : a
a
-ab12

C:\>test
Texte Ó changer : b
b
-ba21

C:\>test
Texte Ó changer : ab
ab
-ab12b

C:\>test
Texte Ó changer : xyz
xyz

C:\>


Grep (pour windows) trouvable ici => http://gnuwin32.sourceforge.net/packages.html

Sans cela, j'avoue que je vois pas trop.... le "batch" windows c'est quand même super limité comme outil de programmation.
Libérez-vous : http://www.debian.org
Nobody knows what sysadmin does... until he stops doing it
Avatar de l'utilisateur
CaSa
PC-Infopraticien
PC-Infopraticien
 
Messages: 8978
Inscription: 13 Mai 2003 16:32
Localisation: Sisteron... et jamais loin d'une Debian
 

Re: Remplacer une lettre par une chaîne de caractère en batc

Message le 06 Jan 2012 18:35

Merci, je vais essayer avec Grep.
mlkgiosn
Apprenti(e) Expert(e)
Apprenti(e) Expert(e)
 
Messages: 394
Inscription: 09 Avr 2010 13:54
 



Sujets similaires

Message remplacer un chargeur
Bonjour,Je souhaite remplacer un chargeur d'ordinateur portable ayant ces caractéristiques ci:Chargeur d'origine:input 100-240V ~50-60Hz 2.0Aoutput 19V ? 6.32A Par ce nouveau chargeur:input 100-240V ~50-60Hz 2.0Aoutput 19V ? 4.32A Est-ce que ça pose un problème s'il n'y a pas le même ampère en s ...
Réponses: 8

Message remplacer microprocesseur
Mais pourquoi tu veux remplacer un micro pour sa soeur ??? ------------>[]Si vous savez d'ou cela vient Sinon +1 avec routman54 sinon je suppose que cela fonctionné bien avant ? C'est un PC monté ou acheté dans le commerce du coup regarde la référence. Sinon va falloir démonter le dissipateur ...
Réponses: 2

Message Pb, mon écran de pc portable ressemble à une chaine cryptée
Bonjour,J'espère être sur le bon topic, depuis quelques jours, l'écran de mon ordinateur portable freeze ou fait apparaître de jolis dégradés de couleur façon mire.J'ai l'impression qu'en bougeant plus ou moins l'écran, j'arrive à peu près à stabiliser l'écran sur un fonctionnement normal. Je pensai ...
Réponses: 5

Message PC vers chaine Hifi et TV
bonjour.Un ami recherche une solution qui permette ceci :1. Relier son PC à sa chaîne Hifi distante, et/ou :2. Relier son PC à sa TV distante (qui n'est pas une smart TV).Existe-t-il un relais qui utiliserait le réseau domestique pour switcher entre chaîne Hifi et TV selon qu'on veuille transférer d ...
Réponses: 2

Message remplacer lecteur dvd par disque dur
Bonjour,j'ai un Asus N75SF-V2G-TZ065Vje voudrais mettre un DD statique à la place de l'actuel, en y réinstallant window, et remplacer le lecteur dvd par le disque dur qui est déjà dedans, si possible pour y mettre linux.Un pote m'a dit que ce n'était pas standard, mais je doute de ses compétences.Il ...
Réponses: 5

Message Ecran cassé à remplacer ?
Bonjourj'ai un Acer Aspire V5 modèle ZRI mais mon écran est casséun ami possède 3 écrans fonctionnels pour portables mais il est loin de chez moi et il les vend 25$ chaquevoici les modèles des écrans- LP150E06(A3)(K2) - 15"- LQ150F1LH43 - 15"- LTN154AT01 - 15"ma question est lequel de ...
Réponses: 4

Message enceintes externes chaîne hifi
Bonjour,J'aimerais connecter des enceintes externes à ma chaîne hifi, c'est-à-dire sans fils apparents, avec seulement un connecteur rouge ou blanc. J'aimerais donc remplacer mes enceintes actuelles de ma chaîne hifi, avec des fils apparents, pour les remplacer par d'autres enceintes.Chaine hifi: ak ...
Réponses: 1


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités


.: Nous contacter :: Flux RSS :: Données personnelles :.