Boucle avec variable dans un fichier txt + calcul de la taille d'un dossier

Résolu
GEEK82500 Messages postés 8 Statut Membre -  
GEEK82500 Messages postés 8 Statut Membre -
Bonjour.
J'essaie de faire un code qui me calcule la taille de certains dossiers avec export vers un fichier txt.
voici ce que j'ai commencé à faire (mais comme j'apprends seul, ça ne marche pas forcément, et là je cale...).
Ce que j'essaie de faire c'est d'aller chercher la variable nom d'utilisateur dans un fichier TXT (%%X) et la mettre ensuite dans un code qui me calcule la taille du répertoire de cet utilisateur et exporte le résultat vers un fichier txt... (pas simple pour un petit novice comme moi).
Ci-dessous ce que j'ai fait:

for /f "delims=" %%X in ("C:\Users\FIAULT\Desktop\users_profs.txt") do (

set ma_var=%%X

)

set FOLDER="C:\Users\FIAULT\Desktop\profs\%%X\WinConf.V6"

for /r %FOLDER% %%A in (*) do set /a size+=%%~zA/1000000

echo %size%Mo >> "C:\Users\FIAULT\Desktop\extraction.txt"

6 réponses

  1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 929
     
    Bonjour,

    Est-ce que tu as essayé cela :

    Setlocal EnableExtensions EnableDelayedExpansion

    for /f "usebackq delims=" %%X in ("C:\Users\FIAULT\Desktop\users_profs.txt") do (

    for /r "C:\Users\FIAULT\Desktop\profs\%%X\WinConf.V6" %%A in (*) do set /a size+=%%~zA/1000000

    )

    echo !size!Mo >> "C:\Users\FIAULT\Desktop\extraction.txt"


    0
    1. GEEK82500 Messages postés 8 Statut Membre
       
      voici le résultat que j'obtiens

      Mo
      Mo
      Mo

      Il n'y a pas le nom devant ni la valeur (oui j'avais oublié, j'aurais souhaité obtenir dans le fichier extraction.txt des lignes sous le format NOM,%SIZE%Mo) dans l'exemple ci-dessus j'ai trois noms sur trois lignes dans le fichiers users_profs.txt donc le nombre de ligne du résultat semble correspondre mais pas le fait qu'il manque la valeur (et le nom)
      0
      1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 929 > GEEK82500 Messages postés 8 Statut Membre
         
        On va vérifier les lignes une par une.

        Que donne comme résultat ceci :

        for /f "usebackq delims=" %%X in ("C:\Users\FIAULT\Desktop\users_profs.txt") do echo %%X
        0
  2. GEEK82500 Messages postés 8 Statut Membre
     
    oups, désolé je n'avais pas vu ta réponse, ci-dessous le résultat (ça semble bon)

    C:\Users\FIAULT\Desktop>for /F "usebackq delims=" %X in ("C:\Users\FIAULT\Desktop\users_profs.txt") do echo %X

    C:\Users\FIAULT\Desktop>echo CANALB
    CANALB

    C:\Users\FIAULT\Desktop>echo FEDRIGM
    FEDRIGM

    C:\Users\FIAULT\Desktop>echo FIAULTA
    FIAULTA

    C:\Users\FIAULT\Desktop>pause
    Appuyez sur une touche pour continuer...
    0
    1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 929
       
      Très bien maintenant que donne ceci :

      for /r "C:\Users\FIAULT\Desktop\profs\CANALB\WinConf.V6" %%A in (*) do echo %%A
      0
  3. GEEK82500 Messages postés 8 Statut Membre
     
    ben là je vais peut être pas copier tout le résultat car il y pas mal de choses
    dans la fenêtre cmd ça a fait des résultats comme ci-dessous pour chaque fichier

    C:\Users\FIAULT\Desktop>echo C:\Users\FIAULT\Desktop\profs\CANALB\WinConf.V6\test3\Visites BTS\vignaux.pdf
    C:\Users\FIAULT\Desktop\profs\CANALB\WinConf.V6\test3\Visites BTS\vignaux.pdf
    0
    1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 929
       
      Très bien donc ce script devrait marcher :

      @echo off
      Setlocal EnableExtensions EnableDelayedExpansion

      for /f "usebackq delims=" %%X in ("C:\Users\FIAULT\Desktop\users_profs.txt") do (

      for /r "C:\Users\FIAULT\Desktop\profs\%%X\WinConf.V6" %%A in (*) do set /a size+=%%~zA/1000000

      echo !size!Mo >> "C:\Users\FIAULT\Desktop\extraction.txt"

      )
      0
  4. GEEK82500 Messages postés 8 Statut Membre
     
    c'est incompréhensible, j'ai toujours les trois lignes avec Mo sur chacune de ces trois lignes mais sans la valeur

    alors que quand je teste la ligne ci-dessous ça marche... (juste un truc j'ai mis %size% et pas !size! comme sur ta réponse parce que sinon ça affichait !size! sur le script, c'est un problème ça?)

    for /r "C:\Users\FIAULT\Desktop\profs\FIAULTA\WinConf.V6" %%A in (*) do set /a size+=%%~zA/1000000

    echo %size% Mo >> "C:\Users\FIAULT\Desktop\extraction.txt"
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. GEEK82500 Messages postés 8 Statut Membre
     
    oui j'avais bien cette ligne et j'ai à nouveau remplacé %size% par !size!
    mais j'ai toujours:

    Mo
    Mo
    Mo

    ...
    0
    1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 929
       
      Je pense avoir une solution, en appelant une fonction :

      @echo off
      Setlocal EnableExtensions EnableDelayedExpansion

      for /f "usebackq delims=" %%X in ("C:\Users\FIAULT\Desktop\users_profs.txt") do (

      call :taille %%X
      echo !size!Mo >> "C:\Users\FIAULT\Desktop\extraction.txt"

      )

      pause
      exit

      :taille

      set size=0
      for /r "C:\Users\FIAULT\Desktop\profs\%1\WinConf.V6" %%A in (*) do set /a size+=%%~zA/1000000

      goto :eof
      0
  7. GEEK82500 Messages postés 8 Statut Membre
     
    ça marche!!! :)

    juste deux trucs ça me donne

    636Mo
    422Mo
    211Mo

    alors que j'aurais besoin d'avoir le nom devant aussi genre :

    CANALB,636Mo
    FEDRIGM,422Mo
    FIAULTA,211Mo

    également mais ça c'est pas très important le calcul de la taille sous estime d'environ 10% par rapport à quand je fais clic droit propriétés ( pas très important parce que s'agissant des winconf j'ai juste besoin de savoir s'ils sont proches de 4 ou 5 Mo alors que parfois sur certaines sessions il y 200Mo ou plus, mais bon au cas où tu aurais une idée...
    en tout cas merci beaucoup!!! vraiment!!!
    0
    1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 929
       
      Oui il y a une légère dérive mais inférieure à 1% chez moi.

      Voilà la modif pour le nom :

      @echo off
      Setlocal EnableExtensions EnableDelayedExpansion

      for /f "usebackq delims=" %%X in ("C:\Users\FIAULT\Desktop\users_profs.txt") do (

      call :taille %%X
      echo %%X,!size!Mo >> "C:\Users\FIAULT\Desktop\extraction.txt"

      )

      pause
      exit

      :taille

      set size=0
      for /r "C:\Users\FIAULT\Desktop\profs\%1\WinConf.V6" %%A in (*) do set /a size+=%%~zA/1000000

      goto :eof
      0
      1. GEEK82500 Messages postés 8 Statut Membre > barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention  
         
        ça marche!!! nickel et encore merci pour l'efficacité!!!
        0