Supprimer les espces blancs en fin de chaîne

Supprimer les espces blancs en fin de chaîne - Shell/Batch - Programmation

Marsh Posté le 27-09-2007 à 20:56:52    

Bonsoir j'aimerais savoir s'il y a une fonction native en batch pour supprimer les espaces blancs en fin de chaîne
(genre rtrim) ou alors un bout de code assez simple ?
merci beaucoup

Reply

Marsh Posté le 27-09-2007 à 20:56:52   

Reply

Marsh Posté le 28-09-2007 à 16:27:10    

@echo off
for /f "delims=" %%a in (t.txt) do call :cmd "%%a"
pause
exit
:cmd
set ligne=%~1
set var=%ligne:~-2%
set var=%var: =%
set ligne=%ligne:~0,-2%
set ligne=%ligne%%var%
echo %ligne%> s.txt

Reply

Marsh Posté le 28-09-2007 à 21:31:37    

merci blastkiller mais ça fonctionne pas ... c'est  sympa quand même

Reply

Marsh Posté le 29-09-2007 à 12:51:13    

Au cas où t'aurais pas compris, parce que bon, chez moi sa marche, le programme lit le fichier t.txt, supprime les espaces de fin de ligne, et ressort tout ça dans le fichier s.txt

Reply

Marsh Posté le 29-09-2007 à 13:36:08    

@blastkiller
si je fais  
echo (%ligne%)
les espaces y sont toujours
donc ça fonctionne quand tu écris dans un nouveau fichier  
moi  je dois manipuler la chaîne extraite
inscrire la chaîne extraite dans un fichier texte pour le réouvrir et reprendre la chaîne c'est un peu lourd  y a peut être plus simple...

Reply

Marsh Posté le 29-09-2007 à 15:20:08    

@echo off
set chaine=espace_a_la_fin  
echo (%chaine%)
::y'a bien un espace a la fin
set var=%chaine:~-1%
if "%var%"==" " echo (%chaine:~0,-1%)
::y'a pu d'espace
pause
exit

Reply

Marsh Posté le 29-09-2007 à 15:29:21    

C:\>set chaine=espace_a_la_fin
C:\>echo (%chaine%)
(espace_a_la_fin    )
C:\>set chaine2=%chaine: =%
C:\>echo (%chaine2%)
(espace_a_la_fin)
C:\>
 
 
 
Jean-Pierre.

Reply

Marsh Posté le 29-09-2007 à 16:52:00    

@blastkiller
 
Merci

Reply

Marsh Posté le 29-09-2007 à 16:52:49    

@aigles
 
Merci également
 
BON WEEK END à vous

Reply

Marsh Posté le 29-09-2007 à 17:23:27    

@aigles
sa supprime tous les espaces, pas juste ceux de la fin

Reply

Marsh Posté le 29-09-2007 à 17:23:27   

Reply

Marsh Posté le 01-10-2007 à 13:46:10    

blastkiller a écrit :

@aigles
sa supprime tous les espaces, pas juste ceux de la fin


Oups! C'est effectivement un peu radical comme méthode !  :ange:

Reply

Marsh Posté le 19-08-2014 à 14:57:33    

REM Pour ne supprimer qu'à la fin, tant qu'il y en a...
rem (au début $="A B    C  D         ", à la fin $="A B    C  D" )

rem Attention lors d'un copier/coller, cette page peut rajouter des espaces après "set $$=%$%", ce qui crée un bug.
rem Seul "set $=A B    C  D         " a des espaces en fin de ligne.

 

REM Exemple simplifié (sans fonction):
:-------------------------------------------------------------------
@echo off
set $=A B    C  D      
echo I%$%I

 

:DEL_LAST_SPACES
if "%$%"=="" goto DEL_LAST_SPACES_end
set $$=%$%
if not "%$:~,-1% "=="%$$%" goto DEL_LAST_SPACES_end
set $=%$:~,-1%
goto DEL_LAST_SPACES
:DEL_LAST_SPACES_end

 

echo I%$%I
pause


Message édité par TOTO925 le 19-08-2014 à 15:56:31
Reply

Marsh Posté le 22-12-2019 à 16:46:13    

blastkiller a écrit :

@echo off
for /f "delims=" %%a in (t.txt) do call :cmd "%%a"
pause
exit
:cmd
set ligne=%~1
set var=%ligne:~-2%
set var=%var: =%
set ligne=%ligne:~0,-2%
set ligne=%ligne%%var%
echo %ligne%> s.txt


 
désolé pour le déterrage profond mais j'aurais été intéressé de pouvoir lancer ce script depuis un autre dossier que le fichier txt à traiter. Est-ce que quelqu'un saurait l'adapter?
merci d'avance

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed