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 :

comparer 2 fichiers sans avoir recours à un programme externe [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut comparer 2 fichiers sans avoir recours à un programme externe
    Bonjour

    J'ai un fichier md5sum par défaut sous la forme:
    md5 (toto.txt) = dsdkgf4fd64fs4f
    md5 (tutu.txt) = dsd46qs465qsqd
    md5 (tata.txt) = dlqlqs464sS46SS
    et un autre générer temporairement afin de vérifier que le premier est correct:
    md5 (toto.txt) = dsdkgf4fd64fs4f
    md5 (tutu.txt) = dsd46qs465qsqd
    md5 (tata.txt) = dlqlqs464sS46SS
    md5 (titi.txt) = sdd4ds64sd46
    Sans utiliser fc ou comp, je souhaiterai obtenir en sortie par exemple:
    titi.txt: ne figure pas dans le fichier original
    Est-ce que cela est possible sans devoir passer par fc et/ou un autre logiciel ?

    Merci d'avance de vos réponses

  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
    Par défaut
    Salut Olivier,

    Ce code est écrit pour des fichiers 4.3 (toto.txt, titi.txt, etc...). sinon tu dois modifier les valeurs dans cette variable
    !ligne:~5,8!
    mais, dans tous les cas, les fichiers que tu testes doivent tous être de la même longueur. Sinon il faut mettre en place une autre methode de récuperation du nom des fichiers.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    :::Par Sachadee
    :::13-01-2013
    
    @echo off
    
    :::ON DETRUIT LE FICHIER LOG QUI VA ÊTRE CRÉER PLUS BAS
    if exist log.txt del log.txt
    
    setlocal enabledelayedexpansion enableextensions
    
    :::ON RECUPÈRE LES NOMS DE FICHIER CONTENUS DANS TON 2éme FICHIER DANS LA LISTE
    ::: -> !liste2!
    
    FOR /F "delims=" %%a IN (f2.txt) DO (set ligne=%%a
                                         set liste2=!ligne:~5,8! !liste2!)
    
    :::ON BOUCLE UN FINDSTR SUR !LISTE2! ET ON RECUPÈRE L'ERRORLEVEL
    :::SI ERRORLEVEL = 1 ON CRÉE UN FICHIER LOG.txt
    
    for /d  %%a in (!liste2!) do (findstr /l %%a f1.txt > nul
                                  if !errorlevel!==1 (set fmanquant=%%a !fmanquant!
                                                     echo %%a #MANQUANT#>>log.txt))
    
    Echo LISTE FICHIERS MANQUANTS  : !fmanquant!
    
    :end
    
    endlocal
    pause

    Amicalement

  3. #3
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Merci de ta réponse tout bien réfléchi, j'utilise diff.exe qui m'affiche le fichier ajouté non comptabilisé la première fois sous le forme:
    MD5 (monfichier.exe) = D4c2Poe85dqjvdfsn48754qds6q5g
    j'aimerais simplement obtenir l'affichage suivant:
    > monfichier.exe
    Tout en sachant que le nombre de caractères peut varier mais je sèche

  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
    Par défaut
    Bon voilà le code pour résoudre ton problème indépendamment de la taille de tes fichiers et sans programme externe.

    Dans la première boucle on récupère ce qu'il y a entre les parenthèses sans s'occuper de la taille. (j'aurais dû faire cela d'entrer...)

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    :::Par Sachadee
    :::13-01-2013
    
    @echo off
    
    :::ON DETRUIT LE FICHIER LOG QUI VA ÊTRE CRÉER PLUS BAS
    if exist log.txt del log.txt
    
    setlocal enabledelayedexpansion enableextensions
    
    :::ON RECUPÈRE LES NOMS DE FICHIER CONTENUS DANS TON 2éme FICHIER DANS LA LISTE
    ::: -> !liste2!
    
    FOR /F "TOKENS=2 DELIMS=()" %%I IN (f2.txt) DO (set liste2=%%I !liste2!)
    
                                                    
    :::ON BOUCLE UN FINDSTR SUR !LISTE2! ET ON RECUPÈRE L'ERRORLEVEL
    :::SI ERRORLEVEL = 1 ON CRÉE UN FICHIER LOG.txt
    
    for /d  %%a in (!liste2!) do (findstr /l %%a f1.txt > nul
                                  if !errorlevel!==1 (set fmanquant=%%a !fmanquant!
                                                     echo %%a #MANQUANT#>>log.txt))
    
    Echo LISTE FICHIERS MANQUANTS  : !fmanquant!
    
    :end
    
    endlocal
    pause
    Test et dis-moi si c'est OK

    Amicalement

  5. #5
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    J'avance à petits pas, de:
    MD5 (monfichier.exe) = D4c2Poe85dqjvdfsn48754qds6q5g
    je parviens à obtenir:
    (monfichier.txt)
    mais je ne parviens pas à supprimer les parenthèses
    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for /f "Tokens=3 delims= " %%f in (%tmp_path%\%tmp_hash_1%) do (
    echo %%f >> %tmp_path%\%tmp_hash%
    )
    Je poursuis mon exploration

  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
    Par défaut
    Tu as testé le code que je j'ai décris plus haut ?

    En fait j'ai pas dû être assez clair

    f1.txt correspond a ton premier fichier.
    f2.txt correspond au fichier génerer temporairement.

    On test si les fichiers décrits dans f2.txt existe dans f1.txt.

    si non on genère un fichier log.txt avec le nom du/des fichier manquants.

    tu doid juste remplacer les nom f1.txt et f2.txt dans mon code par le nom de tes fichiers (oú la variables les contenants).

    Et ça te fais la comparaison et affiche le fichier manquant sans parenthèse.

    Amicalement

  7. #7
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Petit retard de réponse, j'ai bien testé le code cité un peu plus haut et cela fonctionne, merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher automtiquement les raccourcis clavier sans avoir recours à la touche ALT
    Par Olivier Regnier dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 21/07/2012, 02h18
  2. Réponses: 10
    Dernier message: 11/01/2011, 16h43
  3. Exécuter un fichier sans avoir son nom
    Par fiofiotte dans le forum C
    Réponses: 2
    Dernier message: 02/12/2010, 15h50
  4. Réponses: 1
    Dernier message: 28/08/2009, 10h34
  5. [.xls] Comment créer ce type de fichier sans avoir Excel ?
    Par fredppp dans le forum Framework .NET
    Réponses: 1
    Dernier message: 05/09/2008, 12h29

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