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 :

récupérer la taille des chemins de fichier d'un répertoire et afficher sous cvs


Sujet :

Scripts/Batch

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 4
    Points : 3
    Points
    3
    Par défaut récupérer la taille des chemins de fichier d'un répertoire et afficher sous cvs
    Bonjour,
    actuellement en cours de formation et débutant en batch scripting, je recherche un moyen de récupérer la taille des chemins de fichier dans un répertoire donné,
    puis de renvoyer les résultat sous forme de cvs (openOffice ou Excell).

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @echo off
    for set var in (c:\...\)
    do  {
    		rem il s'agit du chemin actuel 
    		var = %~dp0
    		rem strlen pour la longueur de la variable mais je n'arrive pas à l'utiliser
    		set cmpt = strlen(var)
    		rem ";" étant un possible moyen de changé de colonne 
    		echo var;cmpt >> fichier.xls
    	}
     
    pause


    Merci d'avance pour vos réponses.

  2. #2
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    ton script est louche, batch ce n'est pas bash:

    les blocs de commande se symbolise avec des parenthèses (non pas des accolades);
    les remarques et commentaires doivent êtres hors des blocs de commande;
    "fichier.xls" => csv ou xml ??? il faut savoir;
    en csv il me semble que ce n'est pas des points virgules mais des virgules (Comma Separated Value);
    les variables sont initialisées avec la commande 'set';
    dans les boucles, les paramètre variables sont des lettres pas des nombres;

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    @echo off
    setlocal enabledelayedexpansion
     
    for /d %%a in ("c:\") do (
      set var=%%~dpa
      call :strlen "!var!"
      set cmpt=%errorlevel%
      echo !var!,!cmpt! >> fichier.csv
    )
    pause
    exit /b
     
    :strlen
    set fix=%~1
    for /l %%i in (0 1 4096) do if "!fix:~%%i,1!"=="" exit /b %%i
    exit /b 0
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Réponse
    Merci pour ta réponse InitScreen !

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Dernier petit soucis
    il me reste un dernier soucis qui concerne la boucle,
    je devrais pouvoir faire boucler l'ensemble de mes fichiers dans le dossier :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    @echo off
    setlocal enabledelayedexpansion
    for /r "c:\Program Files\test\compteur\" %%i in (*.*) do (
    		set curdir=%%i
    		echo !curdir!
    			:loop
    			if defined curdir (
    					set curdir=!curdir:~1!
    					set /A result+=1
    					goto loop
    							  )		
    		echo !result!		
    		echo !curdir!;!result! >> fichier.csv
    														)
    pause 
    exit /b

  5. #5
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Les balises CODE peuvent êtres insérer en cliquant sur l'icone #.

    Ceci dit, rien ne te dérange quand tu met un label dans une boucle. Ce n'est pas un switch.

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    @echo off
    setlocal enabledelayedexpansion
     
    for /r "c:\Program Files\test\compteur\" %%i in (*.*) do (
      rem ici tu récupère le chemin d'accès complet du fichier
      set curdir=%%i
      rem tu l'affiche jusque là tout va bien
      echo !curdir!
      rem un label: pourquoi faire tu es dèjà dans une boucle
      :loop
      rem si curdir est définit: bien sûr qu'il est sinon la boucle serait terminé
      if defined curdir (
        rem curdir vaut curdir moins le premier caractère: tu as quelque chose contre la lettre de lecteur
        set curdir=!curdir:~1!
        rem bon rien à dire après j'espère que le fait que tu ne l'ais pas déclaré et que du coup result prenne d'office la valeur 0 ne soit pas un coup de chance
        set /A result+=1
        rem tu boucle sur :loop pour récupèrer la taille du coup ton script ne marche pas
        goto loop
      )
      rem bon rien à dire
      echo !result!
      echo !curdir!;!result! >> fichier.csv
    )
    pause
    exit /b

    tout simplement :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    @echo off
    setlocal enabledelayedexpansion
     
    for /r "c:\Program Files\test\compteur" %%a in (*) do (
      call :strlen "%%~a"
      echo %%a;!ErrorLevel! >> fichier.csv
    )
    pause
    exit /b
     
    :strlen
    set "str=%~1"
    for /l %%i in (0 1 4096) do (
      if "!str:%%i,1!"=="" exit /b %%i
    )
    exit /b 0
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

Discussions similaires

  1. [Débutant] Récupérer la taille des fichiers/dossiers dans une même variable
    Par Bylliboy dans le forum VB.NET
    Réponses: 11
    Dernier message: 18/06/2014, 12h50
  2. Gestion des chemins et fichiers hors charset ascii
    Par PatriK-b dans le forum C++Builder
    Réponses: 5
    Dernier message: 18/12/2009, 15h33
  3. taille des lignes du fichier spool
    Par pat29 dans le forum Oracle
    Réponses: 1
    Dernier message: 13/12/2006, 13h56
  4. Réponses: 4
    Dernier message: 28/08/2006, 14h47

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