IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Compter le nombre de fichiers dans un dossier.


Sujet :

Scripts/Batch

  1. #1
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut Compter le nombre de fichiers dans un dossier.
    Bonjour à vous, j'ai fait du c++ durant mon master donc je ne suis pas entièrement débutant.

    Je cherche à créer une petite application qui pourrait faire la chose suivante :

    compter le nombre de fichiers dans un dossier et stocker ce nombre toutes les heures par exemple.

    Première question : est-il possible de réaliser ceci en c++ ?
    2è : quelle est la fonction qui compte le nombre de fichiers dans un dossier ?

    Bien amicalement,

    Eric.

  2. #2
    zul
    zul est déconnecté
    Membre éclairé Avatar de zul
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 498
    Points : 699
    Points
    699
    Par défaut
    C'est possible de le faire en C++, tu peux je pense regarder du code de boost::filesystem.

    Toutefois, pour ce genre de traitement, je ne vois guère l'intérêt d'utiliser du C++, c'est le genre de traitement qu'on peut faire en shell / batch en 3 lignes.

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par zul Voir le message
    C'est possible de le faire en C++, tu peux je pense regarder du code de boost::filesystem.
    "Boost.FileSystem : le système de fichiers de Boost" par Matthieu Brucher

  4. #4
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Zul, en fait les trucs de shell là ca doit pas être pour moi vu que j'ai windows.

    Je ne suis pas programmeur mais j'ai besoin de réaliser cet outil ^^ donc du c++ vu que je sais un peu en faire... pourquoi pas !

    Eric.

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par EriCstoFF Voir le message
    Zul, en fait les trucs de shell là ca doit pas être pour moi vu que j'ai windows.
    En effet, sous Windows, c'est du batch et non pas du shell. Mais ça marche très bien aussi, surtout en collant le batch dans les tâches planifiées.

    Cela donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo off
    if "%1"=="" goto :eof
    REM OK, le chemin est passé en argument.
    setlocal
    pushd %1
    set count=0
    for /f "usebackq tokens=* delims=" %%I in (`dir /a-d /b /-p`) do (
      set /A count+=1
    )
    set file="%date:~6,4%-%date:~3,2%-%date:~0,2%-%time:~0,2%-%time:~3,2%-%time:~6,2%.txt"
    echo Folder: "%1">%file%
    echo Number of files: %count%>>%file%
    popd
    Argument : répertoire à dénombrer.
    Sortie : fichier au format "AAAA-MM-JJ-HH-mm-ss.txt" contenant le nom du répertoire et le nombre de fichiers recensés.

    Inclusion dans les tâches planifiées, toutes les heures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    schtasks /create /SC HOURLY /TN "CountFiles" /RU SYSTEM /TR "C:\MesBatchs\CountFiles.bat \"C:\MonDossier\ASurveiller\""
    Ayé, fini, plus qu'à améliorer en fonction de tes besoins...


    C'est bien sûr possible à faire en C++, mais je pense que ce sera bien pire : rien que l'utilisation de FindFirstFile/FindNextFile est plus complexe que le batch que je t'ai donné...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  6. #6
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Bon, j'ai essayé de décortiquer ce que tu m'as indiqué, j'ai donc créé :

    CountFiles.bat avec ton code que je n'ai pas retouché

    et dans le planificateur des tâches de windows j'ai mis :

    schtasks /create /SC HOURLY /TN "CountFiles" /RU SYSTEM /TR "C:\Batbat\CountFiles.bat \"C:\Tentative\""

    C'est bien ça il n'y avait rien d'autre à toucher ?

    Sinon, ca me créé un truc quelque part avec la réponse ou bien le pc compte pour son ptit plaisir perso ? :p

    Merci pour ta réponse.

  7. #7
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par EriCstoFF Voir le message
    C'est bien ça il n'y avait rien d'autre à toucher ?
    Normalement, non, sauf à adapter le batch à tes besoins peut-être.

    Citation Envoyé par EriCstoFF Voir le message
    Sinon, ca me créé un truc quelque part avec la réponse ou bien le pc compte pour son ptit plaisir perso ? :p
    Toutes les heures, il va créer un fichier dans le répertoire surveillé (C:\Tentative), avec le nombre de fichiers vus. Donc, forcément, ce chiffre va augmenter de un toutes les heures, vu qu'il y aura à chaque fois le log créé l'heure précédente.

    C'est dans ce sens que tu pourrais avoir besoin de modifier le batch, pour envoyer les rapports de comptage ailleurs, ou utiliser un autre nom pour les fichiers de log (ex : les préfixer avec le nom du répertoire surveillé, par exemple), ou figer "en dur" le répertoire surveillé.

    Pour voir (ou supprimer) la tâche, le plus simple est d'aller dans le "Panneau de configuration" => "Tâches planifiées" : tu devrais y voir une tâche "CountFiles" que tu peux au besoin éditer, supprimer, etc.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  8. #8
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Bonjour,

    La tâche est bien enregistrée, pour vérifier si elle fonctionne je l'execute et dans mon dossier il n'y a pas de fichier créé.

    Tu as une idée ?

    PS : Je suis avec vista

  9. #9
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par EriCstoFF Voir le message
    PS : Je suis avec vista
    Arf, l'UAC...

    Supprime la tâche dans le gestionnaire, refais la commande en enlevant le switch "/RU SYSTEM". L'outil va alors te demander un login / mot de passe pour la tâche, tu y mettras le tien (vérifie tes droits).

    Si tu es Administrateur, attention aux failles de sécurité qui pourraient être créées via cette tâche : un batch, ça se modifie facilement, et ça pourrait permettre à n'importe qui de se promouvoir admin. Pour pallier ça, change les droits du batch afin que TU sois le seul et unique à avoir des droits dessus (supprime les entrées de tous les autres comptes, notamment "Tout le monde"). Ne coche pas les cases "Interdit", il y a des problèmes qui peuvent en découler : enlève les droits aux autres, mais n'interdit pas. Bien sûr, tu te rendras aussi propriétaire exclusif du batch.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  10. #10
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Il y a du progrès, quand la tache se lance, il y a une fenetre msdos qui se met au premier plan : la tache "CountFiles" existe déjà, voulez-vous la remplacer...

    Quoi qu'il en soit, il n'y a toujours aucun fichier créé nulle part... A quoi doit ressembler ce fichier ? Un txt ? Il aura quoi comme nom ? ...

    Amicalement,

    Eric.

  11. #11
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par EriCstoFF Voir le message
    Il y a du progrès, quand la tache se lance, il y a une fenetre msdos qui se met au premier plan : la tache "CountFiles" existe déjà, voulez-vous la remplacer...
    ???? T'as pas mis la commande "schtasks ...." dans le batch, au moins ?
    Parce que si c'est le cas, t'es mal barré : tu vas remplacer la tâche à chaque fois, donc annuler le compteur et repartir sur une heure d'attente avant la prochaine (qui sera annulée aussi, etc, etc).

    Citation Envoyé par EriCstoFF Voir le message
    Quoi qu'il en soit, il n'y a toujours aucun fichier créé nulle part... A quoi doit ressembler ce fichier ? Un txt ? Il aura quoi comme nom ? ...
    Je te l'ai dit : dans le répertoire surveillé, fichier au format "AAAA-MM-JJ-HH-mm-ss.txt" contenant le nom du répertoire et le nombre de fichiers recensés.

    J'ai testé chez moi sur mon XP, ça marche très bien à la différence que je peux, pour ma part, l'exécuter en SYSTEM et donc ne pas avoir à entrer de MdP. Mais c'est la seule différence directe.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. [Python 2.X] Compter le nombre de fichier dans un dossier
    Par la_fouine1806 dans le forum Général Python
    Réponses: 4
    Dernier message: 13/11/2014, 10h19
  2. [XL-2007] Compter le nombre de fichier dans un dossier sharepoint
    Par housemiouzic dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/02/2012, 17h07
  3. Compter le nombre de fichier dans le dossier courrant
    Par FotoXe33 dans le forum Langage
    Réponses: 2
    Dernier message: 18/02/2010, 23h04
  4. Compter le nombre de fichiers dans un dossier et passer au suivant
    Par VictoriusDan dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/01/2010, 21h43
  5. Compter le nombre de fichier dans un dossier
    Par tibo894 dans le forum Langage
    Réponses: 5
    Dernier message: 08/05/2009, 13h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo