BATCH: Compter le nombre de ligne de plusieur fichier

Résolu
poparnassus Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   -  
barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Je souhaite améliorer mon petit script, il compte le nombre de ligne de mes fichier, actuellement je passe en variable chaque fichier et je compte.

mais je souhaiterai que le script analyse le dossier et me compte automatiquement le nombre de ligne de tous mes fichier *.c et *.h , sans avoir a indiquer le chemin de chaque fichier ...

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION 
@for %%n in (%0) do set racine=%%~dpn

set affichage=%racine%affichage.c
set destruction=%racine%destruction.c
set event=%racine%event.c
set init=%racine%init.c
set main=%racine%main.c
set menu=%racine%menu.c
set pilotage=%racine%pilotage.c
set reseau=%racine%reseau.c
set thread_1=%racine%thread_1.c

set prototype=%racine%prototype.h

set /a compt_affichage=0
set /a compt_destruction=0
set /a compt_event=0
set /a compt_init=0
set /a compt_main=0
set /a compt_menu=0
set /a compt_pilotage=0
set /a compt_reseau=0
set /a compt_thread_1=0
set /a compt_prototype=0

:main
cls

for /f "delims=" %%i in ('type "!affichage!"') do set /a compt_affichage+=1
for /f "delims=" %%i in ('type "!destruction!"') do set /a compt_destruction+=1
for /f "delims=" %%i in ('type "!event!"') do set /a compt_event+=1
for /f "delims=" %%i in ('type "!init!"') do set /a compt_init+=1
for /f "delims=" %%i in ('type "!main!"') do set /a compt_main+=1
for /f "delims=" %%i in ('type "!menu!"') do set /a compt_menu+=1
for /f "delims=" %%i in ('type "!pilotage!"') do set /a compt_pilotage+=1
for /f "delims=" %%i in ('type "!reseau!"') do set /a compt_reseau+=1
for /f "delims=" %%i in ('type "!thread_1!"') do set /a compt_thread_1+=1
for /f "delims=" %%i in ('type "!prototype!"') do set /a compt_prototype+=1

set /a total_ligne =!compt_affichage!+!compt_destruction!+!compt_event!+!compt_init!+!compt_main!+!compt_menu!+!compt_pilotage!+!compt_reseau!+!compt_thread_1!+!compt_prototype!

cls
echo affichage !compt_affichage!
echo destruction !compt_destruction!
echo event !compt_event!
echo init !compt_init!
echo main !compt_main!
echo menu !compt_menu!
echo pilotage !compt_pilotage!
echo reseau !compt_reseau!
echo thread_1 !compt_thread_1!
echo prototype !compt_prototype!
echo.
echo ligne=!total_ligne!
pause


:fin
endlocal 
exit



MERCIIIIIIIIIIIIIII (je reflechie ç une solce en meme temps que j'attends une reponse ^^)

1 réponse

barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925
 
Bonsoir,

Voilà la solution :

@echo off

Setlocal enableextensions enabledelayedexpansion

set /a total=0

for %%A in (*.c *.h) do (

set /a compt=0

for /f "tokens=*" %%I in ('type "%%A"') do (set /a compt+=1)

echo %%~dpnxA : !compt!

set /a total=!total!+!compt!

)

echo. & echo Total : !total!

Endlocal

pause

exit
1
poparnassus Messages postés 426 Date d'inscription   Statut Membre Dernière intervention  
 
Ah super !! Merci !
0
barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925 > poparnassus Messages postés 426 Date d'inscription   Statut Membre Dernière intervention  
 
De rien ;)
0
poparnassus Messages postés 426 Date d'inscription   Statut Membre Dernière intervention  
 
Ya un truc que je comprends pas bien, c'est l'utilisation de %%~dpnxA
Il sert juste a recupere le chemin ?
0
barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925 > poparnassus Messages postés 426 Date d'inscription   Statut Membre Dernière intervention  
 
oui c'est ça, si tu veux juste le nom du fichier tu peux utiliser %%A ou %%~nxA
0