Batch Windows : sdupprimer le dernier caractere des enregistrements

[Résolu]
Signaler
Messages postés
214
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
9 avril 2010
-
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
20 avril 2010
-
Bonjour,

je ne sais pas si c'est la bonne section pour poster le message.

voila mon souci. Je souhaiterai avec un script windows (.bat), supprimer le dernier caractère de chaque enregistrement du fichier.

J'ai cherché un peu partout sur le Net mais pas grand chose pour le découpage des chaines de caractere ... en tout cas, rien qui ne correspond à ce que je recherche.

Si vous pouviez m'aiguiller vers une source que je pourrais exploiter ... ce serait super .


Merci d'avoir lu mon petit message ...


ChaPaTa

8 réponses

Messages postés
363
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
20 avril 2010
3
Bonjour,
L'espace en trop vient de l'espace entre la variable et la redirection dans l'echo :

echo !str:~0,-1! >> c:\fichier_final.txt
>
echo !str:~0,-1!>> c:\fichier_final.txt
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
20 avril 2010
3
si par enregistrement tu veux parler d'une ligne alors le script suivant devrait être ce qu'il te faut.

@echo off
setlocal enabledelayedexpansion

del c:\essai2.txt
for /f "delims=" %%i in (c:\fichier_origine.txt) do (
set str=%%i
echo !str:~0,-1! >> c:\fichier_final.txt
)

Vincent.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Je pense qu'on finit d'écrire ce code plus vite que de chercher du tout fait sur le net.
Encore faudrait-il savoir ce qu'est dans ton cas un "enregistrement".

ciao...
BruNews, MVP VC++
Messages postés
214
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
9 avril 2010
4
Merci pour vos réponses rapides.

>> vpoyo : ta solution se rapproche grandement de ce que j'avais etrouver et modifié.

En executant ton script, je visualise bien la suppression du dernier caractere, mais bizarrement, la longueur de l'enregistrement augmente de 1.

La longueur initiale était de 71, en supprimant le dernier j'aurai du avoir 70, mais j'ai 72 ???? avec le 71 et 72 des espaces ... bizarre, vous avez dit bizare ?

Si tu as une idée du pourquoi du comment ...
en plus je ne peux pas faire un trim, car il peut y avoir des blancs en fin d'enregistrement.


snifff

ChaPaTa
Messages postés
214
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
9 avril 2010
4
Oui, je confirme, cela me rajoute 2 caractères blanc en fin de chaine ...
que je fasses un découpage de -1 ou un nombre spécifier, cela me rajoute 2 blancs ...

help please ...

Merci à vous
Messages postés
214
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
9 avril 2010
4
Effectivement,

en fait, pour récpatituler, j'ai un fichier de 71 carac, et je veux en faire un fichier de 70 carac.

En utilisant le découpage que m'as proposé, cela remplace le 71e par un espace.
Donc à l'oeil on voit bien que mon (;) qui est le 71e n'est plus là. Mais il est remplacé par un (espace).

peut etre que le découpage de chaine n'est pas la solution adaptée pour ce que je souhaite faire ? ou c'est peut etre encore un truc qui va pas...


ChaPaTa
Messages postés
214
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
9 avril 2010
4
Grand merci à VPOYO !!!!

c'est moi ... j'avais un espace apres "echo !str:~0,-1!>> c:\fichier_final.txt "

et cela me foutais la grouille !!!


Encore un fois : merci VPOYO



ChaPaTa
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
20 avril 2010
3
Bizare,
chez moi j'ai bien le dernier caractère supprimé (vérifier avec un éditeur héxa :-/)

essai ;
essai 1;
essai ;

devient

essai (1 espace)
essai 1(pas d'espace après le 1)
essai (deux espaces)

peut être que ton blanc supplémentaire vient de ton éditeur affichant la fin de ligne (CR LF) en espace.