Batch Windows : sdupprimer le dernier caractere des enregistrements

Résolu
cs_chapata Messages postés 214 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 9 avril 2010 - 9 avril 2010 à 10:42
cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 - 9 avril 2010 à 12:09
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

cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 6
9 avril 2010 à 11:18
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.
1
cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 6
9 avril 2010 à 11:46
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
1
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
9 avril 2010 à 11:07
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++
0
cs_chapata Messages postés 214 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 9 avril 2010 4
9 avril 2010 à 11:39
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_chapata Messages postés 214 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 9 avril 2010 4
9 avril 2010 à 11:45
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
0
cs_chapata Messages postés 214 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 9 avril 2010 4
9 avril 2010 à 11:56
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
0
cs_chapata Messages postés 214 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 9 avril 2010 4
9 avril 2010 à 12:01
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
0
cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 6
9 avril 2010 à 12:09
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.
0
Rejoignez-nous