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

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

8 réponses

Répondre au sujet
cs_vpoyo 363 Messages postés vendredi 14 février 2003Date d'inscription 20 avril 2010 Dernière intervention - 9 avril 2010 à 11:46
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_vpoyo
cs_vpoyo 363 Messages postés vendredi 14 février 2003Date d'inscription 20 avril 2010 Dernière intervention - 9 avril 2010 à 11:18
+1
Utile
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
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 9 avril 2010 à 11:07
0
Utile
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
cs_chapata 215 Messages postés mercredi 2 février 2005Date d'inscription 9 avril 2010 Dernière intervention - 9 avril 2010 à 11:39
0
Utile
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
cs_chapata 215 Messages postés mercredi 2 février 2005Date d'inscription 9 avril 2010 Dernière intervention - 9 avril 2010 à 11:45
0
Utile
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
cs_chapata 215 Messages postés mercredi 2 février 2005Date d'inscription 9 avril 2010 Dernière intervention - 9 avril 2010 à 11:56
0
Utile
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
cs_chapata 215 Messages postés mercredi 2 février 2005Date d'inscription 9 avril 2010 Dernière intervention - 9 avril 2010 à 12:01
0
Utile
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
cs_vpoyo 363 Messages postés vendredi 14 février 2003Date d'inscription 20 avril 2010 Dernière intervention - 9 avril 2010 à 12:09
0
Utile
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.