Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1353 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Concatenation de chaine texte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Concatenation de chaine texte

n°2030970
Lobster
Pour être bien clair :
Posté le 20-10-2010 à 18:19:40  profilanswer
 

Bonjour,
 
Je cherche a mettre au point un .BAT depuis 2 jours et je commence a m'arracher les cheveux...
Je m'explique :
 
J'ai un dossier qui contient un certain nombre de fichier (aléatoire, pour que ce soit plus drole...).
 
Il faut que j'arrive a recuperer la liste de ces fichier (jusque la pas de souci), mais il faut que je fasse en sorte que les noms de ces fichiers soit tous sur la meme ligne.
Et la, ca coince...
 
Je commence par faire la liste de mes fichiers avec

Code :
  1. DIR "%dossierdepart%\*.*" /ON /B > "%dirprod%\list.txt"


J'essaye ensuite de passer par une double boucle FOR /F pour concaténer les lignes les unes a la suite des autre, mais rien a faire.
 
Deja, suis-je sur le bon chemin ?
Sinon, auriez-vous une idée de comment faire ?


---------------
NULL
mood
Publicité
Posté le 20-10-2010 à 18:19:40  profilanswer
 

n°2031035
Xspawn_Lpc
Posté le 20-10-2010 à 23:09:29  profilanswer
 

oui tu y es presque.
 
pour la boucle :  for /f %%i in ("%dirprod%\list.txt" ) @do echo %%i
 
Adapte en gras selon ce que tu veut faire exactement.


---------------
Quand on aime on ne compte pas. Quel Dilemme lorsque l'on aime compter !
n°2031141
Lobster
Pour être bien clair :
Posté le 21-10-2010 à 14:27:16  profilanswer
 

Merci pour les infos !
 
Je viens d'essayer, mais ca ne fonctionne pas.
J'ai essayer une autre méthode, mais ca ne me renvoie pas le résultat escompté... :D :
 
Dans mon fichier "list.txt", j'ai les lignes suivantes :

Code :
  1. _Logfiles
  2. aclient.cfg
  3. AClient.dat
  4. AddAdmins.log
  5. apps
  6. AUTOEXEC.BAT
  7. CONFIG.SYS
  8. Documents and Settings
  9. Intel
  10. personnel
  11. Program Files
  12. spoolerlogs
  13. temp
  14. WINDOWS


 
Ensuite, je le fait passer a travers le script suivant :

Code :
  1. FOR /f "usebackq delims=" %%a IN ("%dirprod%\list.txt" ) DO (
  2. ECHO %%a > "%dirprod%\listconc.txt"
  3.  FOR /f "usebackq delims=" %%b IN ("%dirprod%\listconc.txt" ) DO (
  4.  ECHO %%a %%b >> "%dirprod%\listconc2.txt"
  5. )
  6. )


 
Ce qui fait que dans mon fichier de sortie (listconc2.txt), je me retrouve avec ca :

Code :
  1. _Logfiles _Logfiles
  2. aclient.cfg aclient.cfg
  3. AClient.dat AClient.dat
  4. AddAdmins.log AddAdmins.log
  5. apps apps
  6. AUTOEXEC.BAT AUTOEXEC.BAT
  7. CONFIG.SYS CONFIG.SYS
  8. Documents Documents
  9. Intel Intel
  10. personnel personnel
  11. Program Program
  12. spoolerlogs spoolerlogs
  13. temp temp
  14. WINDOWS WINDOWS


Alors que ce que je voudrais obtenir, c'est un fichier avec ca :

Code :
  1. _Logfiles aclient.cfg AClient.dat AddAdmins.log apps AUTOEXEC.BAT CONFIG.SYS Documents and Settings Intel personnel Program Files spoolerlogs temp WINDOWS


 
Alors bon, je suis une buse en algo, et je n'arrive pas a trouver la bonne méthode...


---------------
NULL
n°2031183
Xspawn_Lpc
Posté le 21-10-2010 à 16:00:19  profilanswer
 

ouh là
 
tu imbriques une boucle for dans une autre et les 2 font référence à un même fichier , c'est risqué
 
S'il n'y a pas trop d'entrées dans list.txt tu peut passer par une variable
 

Code :
  1. SET STR=
  2. for /f %%i in ("%dirprod%\list.txt" ) do SET STR=%STR% %%i
  3. echo %STR%>"%dirprod%\listconc.txt"


reste juste à rajouter la gestion des noms contenant des espaces (par exemple avec delims et un caractère bidon)


---------------
Quand on aime on ne compte pas. Quel Dilemme lorsque l'on aime compter !
n°2031193
Lobster
Pour être bien clair :
Posté le 21-10-2010 à 16:25:16  profilanswer
 

Merci pour ta réponse ! :jap:
 
En fait, au moment de poster tout a l'heure, j'ai pensé a l'utilisation de la variable.
 
Je suis parti sur un script à 2 variable qui est le suivant (et qui fonctionne également) :

Code :
  1. setlocal ENABLEDELAYEDEXPANSION
  2. SET line=
  3. SET tmp=
  4. FOR /f "usebackq" %%a IN ("%dirprod%\list.txt" ) DO (
  5. SET line=!tmp!
  6. SET tmp=!line! %%a
  7. )
  8. ECHO %tmp%


 
En tout cas, un grand merci :jap: :jap: :jap:


---------------
NULL

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Concatenation de chaine texte

 

Sujets relatifs
[c/c++] comment placer un texte entre deux caracteresMacro Word - Recherche Texte ayant un format défini
Calculette qui prend et retourne une chaîne de caractères[résolu] Nettoyage de chaine par Regex
Probleme couleurs texte de sous-menu sur menu complexeextraction de contenus d'un fichier texte
Attribuer un nombre à du texte sur liste déroulanteimport, traitement, conversion, opération sur fichier texte .txt
Découper une chaîne avec un tableau de longueur en paramAjouter au dernier ipod nano 6G un lecteur de texte
Plus de sujets relatifs à : Concatenation de chaine texte


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR