MS DOS

Surok -  
codeurh24 Messages postés 760 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je cherche à créer un script bat afin de compter le nombre de fichier dans un répertoire, et ensuite, si ce nombre est supérieur à 10 vider ce répertoire.
Etant vraiment débutante si vous avez des réponses très claires et basiques je suis preneuse.

Merci d'avance

2 réponses

  1. DelNC Messages postés 2360 Statut Membre 2 010
     
    Bonjour

    Code en batch
    Voilà déjà un bout de code qui compte le nombre de fichiers dans le répertoire
    Pour l'instant ça met le résultat dans le fichier resultat.txt

    echo off   
    
    for /r "nom_repertoire" %%i in (*.*) do set /a compt+=1
        echo %compt%
        echo %compt% >>resultat.txt
    )

    Moi aussi je débute dans ce langage.
    Je vais essayer de faire la partie qui supprime les fichiers.

    @+
    0
    1. DelNC Messages postés 2360 Statut Membre 2 010
       
      J'ai trouvé comment supprimer tous les fichiers du répertoire.

      Mais je ne sais pas trop comment mettre la condition si plus de 10 fichiers mais je sais mettre une date limite (date de plus de x jours)

      @echo off
      forfiles /d -1 /p nom_repertoire /s /c "cmd /c del @path"
      0
      1. DelNC Messages postés 2360 Statut Membre 2 010 > DelNC Messages postés 2360 Statut Membre
         
        Voilà, je pense que ça devrait marcher avec ce code

        echo off   
        for /r "C:\Users\mougi\Desktop\dossier_sous_dossier_fichier" %%i in (*.*) do set /a compt+=1
        echo %compt%
        if %compt% GTR 10 (
        forfiles /d -1 /p C:\Users\mougi\Desktop\dossier_sous_dossier_fichier /s /c "cmd /c del @path"
        )
        )
        0
  2. codeurh24 Messages postés 760 Date d'inscription   Statut Membre Dernière intervention   123
     
    créer un fichier bat dans le dossier des fichiers a supprimer.
    si il y a 10 fichiers il seront tous supprimés sauf le fichier bat

    @echo off
    set /a compteurBoucle=0
    setlocal ENABLEDELAYEDEXPANSION

    rem Compte le nombre de fichier
    for /r .\ %%X in (*.*) do (
    set /a compteurBoucle=compteurBoucle+1
    echo !compteurBoucle!
    rem si on compte 10 fichiers
    rem on ce rend a la ligne :deletable
    if !compteurBoucle!==2 goto deletable
    )
    goto end

    :deletable
    echo Effacement
    rem pour chaque fichier
    for /f "delims=" %%f in ('dir /b') do (
    rem si le fichier en cour, n'est pas le ficher bat executé
    rem on supprime ce fichier
    IF NOT "%%f" == "%~nx0" DEL /F /Q "%%f"
    )

    :end
    echo Fin

    pause
    0