Remplacer UN caractère dans un .txt en batch.

[Fermé]
Signaler
-
 dimedean -
Bonjour, j'aimerai savoir comment je pourrai remplacer un seul caractère dans un fichier txt en utilisant un .bat ou autre...je m'explique :
j'ai un fichier texte contenant :

00000000

Et je voudrai pouvoir changer un seul de ces "0" par un "1" du genre

00100000

L'idée et de pouvoir contrôler chacun des caractère séparément sans avoir a modifier tout les autres.

PS: je pensé créer 8 fichier bat gérant chacun un des 8 caractère...

Voila j'espère que quelqu'un trouvera mon bonheur ! je vous remercie d'avance bonne journée a tous.



5 réponses

Messages postés
18260
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
20 septembre 2021
5 370
ce .bat prend 2 paramètres, la position du caractère à changer et la valeur de remplacement
C:> type lpt.txt
00000000

C:> aa 3 1

C:> type lpt.txt
00100000

C:> aa 5 2

C:> type lpt.txt
00102000

C:> aa 3 0

C:> type lpt.txt
00002000

C:> type aa.bat
@echo off

set pos=%1
set /a p1=pos-1
set c=%2

setlocal enableDelayedExpansion
for /f "tokens=1" %%a in (lpt.txt) do (
set x=%%a
set y=!x:~0,%p1%!%c%!x:~%pos%,10!
echo !y! > lpt.txt
)

C:>
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

OK merci de votre patience les gars impeccable !

bonne journée a tous.
Messages postés
18260
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
20 septembre 2021
5 370
hello
on affiche 2 caractères puis le X puis le reste à partir du 4ème caractère, donc on a remlacé le 3 par X
C:> set x=1234567890

C:> echo %x:~0,2%X%x:~3,10%
12X4567890

C:>
Merci beaucoup dubcek pour cet réponse rapide et précise !! je vais essayer tout ça je te tien au courant . encore merci .
Merci dubcek je viens d'essayer ce que tu m'a proposer et je n'y arrive pas je suis novice en batch.

ce que je voudrai savoir c'est ce que cela donne concrètement par ce que j'ai essayer plusieurs syntaxes différentes mais ça ne marche pas.

Voila encore merci.
Messages postés
18260
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
20 septembre 2021
5 370
montre un exemple plus précis de ce que tu veux faire
C:> set x=00000000

C:> set y=%x:~0,2%1%x:~3,10%

C:> echo %x% & echo %y%
00000000
00100000

C:>
Donc je m'explique, mon fichier "lpt.txt" ce trouve a la racine de mon HDD, il contient:

00000000

Et je voudrai creer des fichiers bat capable de changer chacun des caractères séparement comme je l'est énoncer avant.

Mon problemme ce pose surtout sur la syntaxe du fichier bat. si tu pouvais me montrer clairement ce qu'y ce trouve dans le .bat. (non pas que ton éxplication n'est pas clair mais comme je l'es dit je suis novice en bat).

Voila voila merci.

j'espere avoir etait un peu plus clair.
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
376
salut,
tu peux utiliser sed.exe (http://gnuwin32.sourceforge.net/packages/sed.htm et dans ton batch cela te donne:
sed monfichier.txt -e"s/00000/00001/g" > monfichier1.txt
del monfichier.txt
rename monfichier1.txt monfichier.txt
@+