Il y a actuellement 408 visiteurs
Jeudi 25 Avril 2024
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: 404
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: 404
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: )
Avatar de l'utilisateur
EinsteinZero
Moderateur
Moderateur
 
Messages: 18292
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à...
Avatar de l'utilisateur
CaSa
PC-Infopraticien
PC-Infopraticien
 
Messages: 9041
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: 404
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.
Avatar de l'utilisateur
CaSa
PC-Infopraticien
PC-Infopraticien
 
Messages: 9041
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: 404
Inscription: 09 Avr 2010 13:54
 



Sujets similaires

Message Quel distribution linux pour remplacer windows
BonjourJe suis un utilisateur de windows depuis plusieurs années maintenant, mais je cherche à me convertir vers une distribution linux, pour des raisons personnelles mais aussi professionnelles.Etant un gros débutant, je cherche une distribution plus semblable à windows, cela me permettra à m'y pre ...
Réponses: 2

Message [Réglé] Question: Où remplacer chargeur défectueux HP Victus
Bonjour à tous,Le chargeur de mon PC portable HP Victus ne fonctionne plus. Autrement, l'ordinateur n'avait pas de souci.Sauriez-vous où je pourrais en acheter un pour le remplacer ?J'ai vu des articles sur Amazon, mais je ne sais pas comment être sûr que le chargeur convient.Le plus simple serait u ...
Réponses: 8

Message [réglé] BSOD à la chaine
Bonjour, voila j'ai eu deux types différents de BSOD aujourd'hui, à plusieurs reprises, et malgré que cela ait cessé depuis plus d'1h, je donnerais les possibles raisons après, j'aimerais toutefois savoir, si il est possible de savoir de quoi ça ait pu venir, notamment en regardant les logs des BSOD ...
Réponses: 25

Message chaine youtube
Bonjour,Sur mon compte YouTube via Google, je regarde des vidéos et pour certains je les ai dans la liste abonné.J'en ai de trop et je voudrais en supprimer, avez-vous une idée de comment faire.Cdt
Réponses: 4

Message conseil pour remplacer carte graphique merci
Bonjour Voila mon petit soucis : ma carte graphique viens de me lâché au bout de 7 année de bon et loyaux service donc je voudrais en racheter une mais je ne sais laquelle choisir par rapport a ma configuration .je peu sortir un budget de 250? a 500?. ma configuration actuel : carte mere M ...
Réponses: 1

Message Remplacer une vieille carte graphique
Bonjour à tous,J'ai un ami qui cherche à changer sa carte graphique qui vient de "lâcher". Quelqu'un pourrait-il me conseiller sachant que le but est juste de conserver l'ordinateur encore quelques temps. Il a dix ans environ...Voici la config : carte mère: ASRock H97 Anniversary - ref: M8 ...
Réponses: 7

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


Qui est en ligne

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


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