Rechercher : dans
Par :

[Batch] lister première ligne fichiers txt

Dernière réponse le 13 mar 2009 à 16:56:17 danieliiitooo, le 10 mar 2009 à 17:34:08 
 Signaler ce message aux modérateurs

Bonjour,

Ci-dessous ma problématique:

Soit "Test" un répertoire contenant X fichiers .txt (X peut être 5,10,54...)

Chaque fichier contient une ligne de texte de la sorte

AAAAAAAA BBBBBBBBBB CCCCCCCCCC

Je souhaiterai, via batch, lister le contenu de ces fichiers dans un seul et unique fichier txt

AAAAAAAA BBBBBBBBBB CCCCCCCCCC
AAAAAAAA BBBBBBBBBB CCCCCCCCCC
AAAAAAAA BBBBBBBBBB CCCCCCCCCC
AAAAAAAA BBBBBBBBBB CCCCCCCCCC
....

Je pourrais alors exploiter son contenu à ma guise via fonction "for".

J'ai tenté la manipe suivante:

@echo off

Set path=Test

set /a nb_of_files=0

if exist "%path%\*.*" for /f "delims=" %%a in ('dir /-D /B "%path%\*.*"') do (
set /a nb_of_files+=1
Set /P File_content= <%path%\%%a
echo %File_content%>>log.txt
)
echo %nb_of_files% files have been loaded
pause

Le résultat est un peu à côté de la plaque:

ECHO is off.
ECHO is off.
ECHO is off.

Pourtant %%a correspond bien aux noms des fichiers successifs mais il y a un truc qui cloche.
On dirait que mon batch ne parvient pas à charger la première ligne des fichiers dans la variable File_content

Pouvez me dire comment y arriver ?

Merci d'avance,

Daniel

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « [Batch] lister première ligne fichiers txt » dans :
[MS-Dos] Ecrire dans un fichier texte en batch VoirPour écrire dans un fichier texte, il suffit d'utiliser une redirection ">" : echo texte_à_ecrire > fichier_de_sortie.txt Pour écrire à la fin d'un texte existant (concaténation) : echo "écriture a la fin du fichier ">>...
Fichier TXT VoirFormat TXT Un fichier TXT est un fichier texte, c'est-à-dire un simple fichier contenant du texte au format ASCII. Pour ouvrir ou modifier un tel fichier, il suffit d'utiliser le bloc-notes ou un éditeur de texte traditionnel.

1

dubcek, le 10 mar 2009 à 17:43:13

Hello
tu veux copier tout le fichier ou une seule ligne de chaque fichier ?
et avec
copy *.txt destination.txt

Répondre à dubcek

2

danieliiitooo, le 12 mar 2009 à 09:50:16

Merci Dubcek,

Je ne souhaite récupérer que la première ligne (Chaque fichier contient une seule et unique ligne formattée de la même manière)

Malheureusement, la commande copy test\*.* destination.txt copie les données en vrac dans le fichier destination.txt.
Celles-ci sont alors inexploitable via fonction for.

Répondre à danieliiitooo

3

dubcek, le 12 mar 2009 à 10:12:06

Qu'appelles tu en vrac ?

si (Chaque fichier contient une seule et unique ligne formattée de la même manière)
copy test\*.* destination.txt devrait fonctionner

>type z*
z1
aaaaaaaaaaa

z2
bbbbbbbbbbb

z3
cccccccccccc

>copy z* xxx
1 fichier(s) copié(s).

>type xxx
aaaaaaaaaaa
bbbbbbbbbbb
cccccccccccc

Répondre à dubcek

4

 danieliiitooo, le 13 mar 2009 à 16:56:17

En fait cela fonctionne. =)

Il faut que j'arrête la moquette.

Merci Dubcek

Répondre à danieliiitooo