Batch - Supprimer l'espace à la fin de chaque ligne d'un fichier.txt

Batch - Supprimer l'espace à la fin de chaque ligne d'un fichier.txt - Shell/Batch - Programmation

Marsh Posté le 18-08-2006 à 21:49:43    

Bonjour, j'ai besoin de créer un boucle for pour supprimer  l'espace à la fin de chaque ligne d'un fichier.txt, j'ai un script qui liste le contenu d'un répertoire dans un fichier.txt et il ajoute un espace à la fin de chaque ligne, cet espace me gêne pour réutiliser les chemins, quelqu'un saurait-il comment je peux syntaxer cette boucle ?

Reply

Marsh Posté le 18-08-2006 à 21:49:43   

Reply

Marsh Posté le 18-08-2006 à 22:22:47    

Si tu passes une chaîne de caractères en paramètre d'une procédure, la syntaxe %~1 supprime les espaces superflus au début et à la fin de la chaîne.

Reply

Marsh Posté le 18-08-2006 à 22:32:36    

Merci, mais coment faire pour passer les chemins de fichiers contenu dans le fichier.txt à la variable %~1 ?

Reply

Marsh Posté le 18-08-2006 à 22:35:40    

Ah, ok je vois ce que tu veux dire, alors voilà ma boucle for qui liste les fichiers dans le fichier.txt:
 

Code :
  1. for /r "%VarRepSource%\" %%i in (*.bat) do echo %%~i>> result.txt


J'ai ajouter le ~ à la variable %%i, mais l'espace apparait toujours

Reply

Marsh Posté le 18-08-2006 à 23:23:48    

Je parlais de %~1 :)
 
Donc :

Code :
  1. for .... %%i ... do (
  2.   call :process "%%i"
  3. )
  4. goto next
  5. :process
  6. echo %~1>>result.txt
  7. goto :eof
  8. :next

Reply

Marsh Posté le 18-08-2006 à 23:42:49    

Merci encore  :)  
 
Le code focntionne sauf si je me sert la la variable %1 pour le fichier comme ceci:
 

Code :
  1. for /r "%~1\" %%i in (*.bat) do
  2. call :process "%%i"
  3. )
  4. goto next
  5. :processecho %~1>>result.txt
  6. goto :eof
  7. :next

Reply

Marsh Posté le 18-08-2006 à 23:49:03    

Et c'est quoi le problème (sans compter la faute de frappe :D ) ?

Reply

Marsh Posté le 18-08-2006 à 23:52:17    

Que ça ne marche pas si je me sers le %1 pour récupérer le fichier glisser sur la batch.
 
for /r "%~1\" %%i in (*.bat) do


Message édité par webding le 19-08-2006 à 00:00:42
Reply

Marsh Posté le 19-08-2006 à 00:02:42    

Quand tu glisses un fichier, %1 = chemin complet du fichier avec guillemets si nécessaire.
 
Or
for /r
doit être suivi du chemin d'un dossier. Ce n'est pas la même chose.

Reply

Marsh Posté le 19-08-2006 à 00:07:42    

J'ai dit nimporte quoi, désole, c'est un répertoire que je fait glisser sur la batch, pour y kister les fichier, mais le fichier.txt n'est pas généré

Reply

Marsh Posté le 19-08-2006 à 00:07:42   

Reply

Marsh Posté le 19-08-2006 à 00:10:39    

Oki.
 
Et pourquoi le \ après %~1 ? Il y a une raison particulière ?
 
Bon, je vais au dodo :sleep: La suite demain :)
 
PS : ne JAMAIS générer un fichier sans son chemin complet. Si ça se trouve, ton .txt est bien créé mais tu ne le trouve pas. Chuis pas sûre, mais vérifie :D


Message édité par wackevat le 19-08-2006 à 00:11:53
Reply

Marsh Posté le 19-08-2006 à 18:19:58    

Me revoilà, ça ne marche pas avec cette boucle, là je récupére le chemin du répertoire favoris dans la base de registre:
 
 

Code :
  1. echo set VrRegFavoris=%%~1> "%~dp0supprspace.bat"
  2. for /f "skip=4 tokens=1,2* delims= " %%a in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Favorites') do call "%~dp0supprspace.bat" "%%c"
  3. echo %VrRegFavoris%>f


Message édité par webding le 19-08-2006 à 18:20:55
Reply

Marsh Posté le 20-08-2006 à 18:25:25    

Qu'est-ce qui ne marche pas ? Aucun problème chez moi, à part le fait que le code est tout moche, ou pourquoi faire simple quand on peut faire compliqué :D

Code :
  1. for /f "skip=4 tokens=2*" %%a in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Favorites') do (
  2.   echo %%b>"%~dpn0.txt"
  3. )

Reply

Sujets relatifs:

Leave a Replay

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