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 :

Batch dos : Parcourir un repertoire et comparer les fichiers portant le même nom


Sujet :

Scripts/Batch

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Batch dos : Parcourir un repertoire et comparer les fichiers portant le même nom
    Bonjour tout le monde,

    Voici mon souci :
    On me demande de procéder à une comparaison d'un / plusieurs fichiers, avec tous les fichiers portant le même nom, en parcourant toute l'arborescence de mon emplacememnt réseau ( avec des dossiers et des sous dossiers), je m'explique :

    1. J'ai une un fichier txt contenant les noms de fichiers à comprarer (liste.txt)
    que je recupére via un autre batch

    2. Je prends chaque fichier dans cette liste, et je parcours toute mon arborescence à la recherche d'un fichier portant le même nom

    3. je compare avec la commande fc, et avec le code errorlevel j'obtiens ma liste des fichiers qui sont identique avec leur emplacement, et ceux qui présent des indifférences, voici mon batch :

    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
    17
    18
    19
    @echo off
    
    setlocal ENABLEDELAYEDEXPANSION 
    for /f "" %%z in (X:\liste.txt) do (
        set fichier=%%z
    	echo !fichier!
        for /f "delims=" %%y in ('dir /S /B \\serveurcvs\...\!fichier!') do (
    		set fichier1=%%y
    	        for /f "delims=" %%c in ('dir /S /B \\serveurcvs\...\!fichier!') do (
    			set fichier2=%%c
    			if !fichier1! NEQ !fichier2! (
    				FC /B "!fichier1!" "!fichier2!" > nul    
                                                       if NOT ERRORLEVEL 0 (echo "!fichier!";"!fichier1!";"!fichier2!";KO >> "X:\compar_result_KO.csv") 
    				if ERRORLEVEL 0 (echo "!fichier!";"!fichier1!";"!fichier2!";OK >> "X:\compar_result_OK.csv")			
                                                                                                             				
    			)
    	    )
    	)
    )
    Sauf que là j'obtiens pas du tout le résultat souhaitait, à chaque je me trouve en sortie avec un tableau excel contenant l'ensemble des fichiers (ceux qui sont identiques, et ceux qui sont différents), je suis bloqué sur ça je ne sais pas trop qu'est ce qui ne va pas ... Merci de m'aider svp

  2. #2
    Membre averti Avatar de plopi
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2011
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 191
    Points : 306
    Points
    306
    Par défaut
    C'est pas les "IF"/ "IF NOT" qui posent problème, avec un "else" ça marcherais pas mieux ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if NOT ERRORLEVEL 0 (echo "!fichier!";"!fichier1!";"!fichier2!";KO >> "X:\compar_result_KO.csv") else (echo "!fichier!";"!fichier1!";"!fichier2!";OK >> "X:\compar_result_OK.csv")

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par plopi Voir le message
    C'est pas les "IF"/ "IF NOT" qui posent problème, avec un "else" ça marcherais pas mieux ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if NOT ERRORLEVEL 0 (echo "!fichier!";"!fichier1!";"!fichier2!";KO >> "X:\compar_result_KO.csv") else (echo "!fichier!";"!fichier1!";"!fichier2!";OK >> "X:\compar_result_OK.csv")
    Oui j'ai déjà essayé avec des else mais j'avais aucun fichier excel n'est generé, j'ai même fait en deux lignes :
    IF ERRORLEVEL 0
    IF ERRORLEVEL 1

    Rien à changer

  4. #4
    Membre averti Avatar de plopi
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2011
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 191
    Points : 306
    Points
    306
    Par défaut
    Citation Envoyé par masterali Voir le message
    j'ai même fait en deux lignes :
    IF ERRORLEVEL 0
    IF ERRORLEVEL 1
    Le errorlevel ne peux pas marcher en deux lignes...

    vu que le "errorlevel 1" prend comme reéférence le résultat de la commande précedente... c'est à dire le "errorlevel 0" dans le cas présent or la il faut le errorlevel de la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FC /B "!fichier1!" "!fichier2!" > nul
    Citation Envoyé par masterali Voir le message
    Oui j'ai déjà essayé avec des else mais j'avais aucun fichier excel n'est generér
    A mon avis avec le "else" ça ne marchait pas parce que dans ton "echo" de résultat il y a beaucoup de caractères spéciaux... ( peut être mettre le Chemin+Fichier en variable ... )

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Je garde juste la premiére condition :
    if ERRORLEVEL 1 (echo "!fichier!";"!fichier1!";"!fichier2!";KO >> "X:\compar_result_KO.csv")

    Et ça à l'air de bien fonctionner, et comme ça gêné pas je vais garder cette solution.

    Merci pour tout

  6. #6
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    salut,

    Citation Envoyé par plopi Voir le message
    Le errorlevel ne peux pas marcher en deux lignes...

    vu que le "errorlevel 1" prend comme reéférence le résultat de la commande précedente... c'est à dire le "errorlevel 0" dans le cas présent or la il faut le errorlevel de la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FC /B "!fichier1!" "!fichier2!" > nul
    "errolevel 0" n'est pas une commande, et l'instruction "if" ne renvoie pas de code de retour. Cependant, pour que ça fonctionne il faut faire des branchements et commencer par le numéro le plus élevé.

    Pour ce qui est de la comparaison, pourquoi ne pas utiliser un utilitaire checksum crc32, md5 ou encore sha1...

  7. #7
    Membre averti Avatar de plopi
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2011
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 191
    Points : 306
    Points
    306
    Par défaut
    Citation Envoyé par minnesota Voir le message
    ... et l'instruction "if" ne renvoie pas de code de retour.

    Autant pour moi, merci d'avoir corrigé

Discussions similaires

  1. [XL-2010] Parcourir deux tableaux et comparer les valeurs
    Par Vayzz dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 09/05/2015, 17h44
  2. Pb pour parcourir et comparer les fichiers xml
    Par bayouta19 dans le forum Langage
    Réponses: 22
    Dernier message: 18/04/2013, 13h50
  3. Parcourir un Repertoire et afficher les informations.
    Par jeffray03 dans le forum Général Java
    Réponses: 2
    Dernier message: 26/02/2013, 09h04
  4. comparer les valeurs d'un même tableau
    Par DelphLaga dans le forum Langage
    Réponses: 11
    Dernier message: 19/07/2006, 14h32
  5. [Tableaux] Comparer les lignes d'un même tableau
    Par derfatypik dans le forum Langage
    Réponses: 5
    Dernier message: 06/01/2006, 12h14

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