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 les fichiers dont les 5 premières lettres sont identiques


Sujet :

Scripts/Batch

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut compter les fichiers dont les 5 premières lettres sont identiques
    Bonjour,

    Je ne suis pas programmeur mais pour simplifier une partie de mon travail j’aimerai en automatiser une partie.
    J’ai essayé pas mal de choses trouvé sur le net mais je ne m’en sort pas, donc si quelqu’un pouvait me donner un coup de main ça serait super

    Le contexte :
    Je télécharge des fichiers récupérés sur un ftp, envoyé par des unités, normalement 15 fichiers par unités.
    Cependant il arrive que le transfert ne soit pas correct et seulement une partie des 15 fichiers soit transféré(10,12).

    Le job
    Donc je dois télécharger les fichiers du ftp et vérifier que chaque unité a envoyé 15 fichiers.
    Sinon supprimer les fichiers des unités qui ne sont pas complètes et contacter l’unité dont le transfert n’a pas fonctionné correctement pour forcer un nouveau transfert ftp.

    Mon probleme
    J’ai adapté un script de téléchargement ftp et ça marche. Tous les fichiers présent sur le ftp sont téléchargés dans un dossier appelé DL.

    Je dois donc vérifier que chaque unité a envoyé 15 fichiers

    Chaque fichier reçu commence par un nombre à 5 chiffres désignant une unité.
    Exple : 14999-*******.txt

    J’ai un fichier listeunite.txt qui contient la liste des unités qui doivent envoyer des fichiers (contient les codes à 5 chiffres).
    Exemple :
    10040
    10125
    10147
    10187

    Je pensais faire une boucle dans le genre

    -pour chaque unité dans le fichier listeunite.txt on compte le nombre de fichiers
    -si nombre de fichier =15 on déplace les fichiers dans un dossier globalatraiter
    -si cpt <15 écrire dans un fichier log (unité ????? incomplet le --/--/-- nb ficrecu) et déplacer dans incomplet dans un autre dossier incomplet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    cd \RecuperationFtp\DL\
    REM comptage des fichiers dans le dossier DL
    @echo off
    set /a nbfic=0
    for %%a in (*.txt) do set /a nbfic+=1
    echo "nb de fichier dans le dossier DL : " %nbfic%
    dir /b >> listedl.txt
    le batch marche jusque là
    après je voulais parcourir le dossier DL (ou un fichier contenant la liste des fichiers se trouvant dans DL : listedl.txt) autant de fois qu’il y a de numéro d’unités dans le fichier listeunites.txt.
    Comme je n’arrive pas découper le nom des fichiers pour récupérer les 5 premiers caractères et compter le nombre de fichiers… c’est compromis. Ou alors une idée pour le faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for /f "delims="%%b in (listedl.txt) do call :commande  "%%b"
    pause
    exit
    :commande
    set unite=%b~0,5%
    echo %unite%
    Merci d’avance pour votre aide.

  2. #2
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut Jomel0609,

    Je ne comprends pas vraiment ton problème, faut dire que ton énoncer et
    un peu trouble. Et dans tes codes apparemment il y a déjà les réponses à
    tes questions.

    set unite=%b~0,5%
    pour récuperer les 5 premiers caractères.

    Soit un peu plus clair, pour nous expliquer oú tu coinçes.

    Amicalement

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    J ai telechargé des fichiers d un FTP .
    Je dois verifier que j ai bien 15 fichiers par unites.
    Les fichiers commence par un code a 5 chiffres.

    Dans un fichier txt j ai liste des unites qui doivent envoyer des fichiers.

    Les fichiers reçu sont de la forme 10140-xxxx.txt

    Mon problème en clair c est comment vérifier que j ai bien 15 fichiers par unité.


    --
    Mon idée était de couper le nom des fichiers pour récupérer le code unité et e compter combien de fois j avais le code unité en bouclant sur le fichier txt contenant la liste des unités devant envoyer des fichiers.

    Le code que j ai mis pour récupérer le début du nom de fichiers ne marche
    Pas . J ai un message d erreur " in était attendu"

  4. #4
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Ton message d'erreur vient du fait que tu as oublié un espace aprés le delim

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "delims=" %%b in (listedl.txt) do call :commande  "%%b"
    et si tu utilise la fonction call :argument

    l´argument dans la fonction call est traité comme %1 et non %%b

    Voilà un code qui fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @echo off
    
    
    for /f "delims=" %%b in (listedl.txt) do (set fichier=%%b 
                                           echo %fichier:~0,5%)
    
    pause
    Amicalement

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour la correction. Ça marche mieux j ai pas d erreur.
    Maintenant ça récupère bien les 5 premiers caractères mais uniquement de la dernière ligne.
    C est comme si ça bouclait qu'une seule fois
    J ai voulu ajouter un compteur aussi mais ça s incrémente pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For /f "delims=" %%b in (listedl.txt) do ( set unite=%%b
    set /a nl+=1
    echo %unite:~0,5% 
    echo %nl%
    pause
    )

    Amicalement

  6. #6
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Essaie ce code.
    Chez moi il fonctionne parfaitement.


    Code : 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 enableextensions
    
    set nl=1
    
    For /f "delims=" %%b in (listedl.txt) do (set unite=%%b
    					  set /a nl=!nl!+1
                                              echo !unite:~0,5! 
                                              echo !nl!)
    
    
    endlocal
    
    pause

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/06/2010, 10h24
  2. Comment lire les fichiers dont l'extension est .tex ?
    Par condor_01 dans le forum Ubuntu
    Réponses: 3
    Dernier message: 19/10/2007, 16h24
  3. Réponses: 2
    Dernier message: 22/08/2007, 12h46
  4. Réponses: 4
    Dernier message: 16/08/2003, 13h21

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