BATCH: Compter le nombre de ligne de plusieur fichier

Résolu
poparnassus Messages postés 462 Statut Membre -  
barnabe0057 Messages postés 14329 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

  1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    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
    1. poparnassus Messages postés 462 Statut Membre 31
       
      Ah super !! Merci !
      0
      1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930 > poparnassus Messages postés 462 Statut Membre
         
        De rien ;)
        0
    2. poparnassus Messages postés 462 Statut Membre 31
       
      Ya un truc que je comprends pas bien, c'est l'utilisation de %%~dpnxA
      Il sert juste a recupere le chemin ?
      0
      1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930 > poparnassus Messages postés 462 Statut Membre
         
        oui c'est ça, si tu veux juste le nom du fichier tu peux utiliser %%A ou %%~nxA
        0