Batch Windows : sdupprimer le dernier caractere des enregistrements [Résolu]

Messages postés
215
Date d'inscription
mercredi 2 février 2005
Dernière intervention
9 avril 2010
- - Dernière réponse : cs_vpoyo
Messages postés
363
Date d'inscription
vendredi 14 février 2003
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
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Dernière intervention
20 avril 2010
3
Merci
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

Merci cs_vpoyo 3

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

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_vpoyo
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Dernière intervention
20 avril 2010
1
Merci
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.
Commenter la réponse de cs_vpoyo
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
0
Merci
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++
Commenter la réponse de BruNews
Messages postés
215
Date d'inscription
mercredi 2 février 2005
Dernière intervention
9 avril 2010
0
Merci
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
Commenter la réponse de cs_chapata
Messages postés
215
Date d'inscription
mercredi 2 février 2005
Dernière intervention
9 avril 2010
0
Merci
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
Commenter la réponse de cs_chapata
Messages postés
215
Date d'inscription
mercredi 2 février 2005
Dernière intervention
9 avril 2010
0
Merci
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
Commenter la réponse de cs_chapata
Messages postés
215
Date d'inscription
mercredi 2 février 2005
Dernière intervention
9 avril 2010
0
Merci
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
Commenter la réponse de cs_chapata
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Dernière intervention
20 avril 2010
0
Merci
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.
Commenter la réponse de cs_vpoyo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.