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 différence entre deux documents récents [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Janvier 2016
    Messages : 23
    Par défaut Récupérer la différence entre deux documents récents
    Bonjour à tous et toutes

    Je viens vous demander de l'aide.

    Tous les jours un document articles.txt est créé automatiquement.
    Je dois réaliser plusieurs modifications sur le document.

    Une fois les modifications réalisées le document est nommé articles_Final + date du jour soit du format articles_Final_2016_01_07.txt

    Les documents sont ensuite déplacés dans un répertoire ".\HISTO\FINAL"

    Je cherche à trouver les deux plus récents documents et à écrire dans un document différence.txt (par exemple) la différence entre les deux documents.

    Je sais comment trouver le document le plus récent mais pas 2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     @ECHO OFF
    set $chemin=".\HISTO\ORIGINAL"
    for /f "delims=" %%a in ('dir ".\HISTO\FINAL" /aa/b/o-d') do (set $f="%%a"
                                                   goto:next)
    :next
    echo le dernier fichier est : %$f%  >>plus_recents.txt

    Ensuite, je sais comment trouver la différence entre les deux documents mais pour l'instant les noms sont en brut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    findstr /v /g:articles_Final_2016_01_04.txt  articles_Final_2016_02ss_04.txt  >difference.txt
    Si vous avez une idée pour m'aider çà serait sympa.
    Merci pour l'aide que vous m'apporterez
    @+

  2. #2
    Membre émérite Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Par défaut
    Bonjour,
    Pour la partie comparaison et extraction dans un autre fichier texte j'ai trouvé et adapté le code suivant:
    http://stackoverflow.com/a/6855506

    Ce qui donne:
    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
    @echo off & cls
    SETLOCAL EnableDelayedExpansion
     
    set "PremierFichier=Chemin_Vers_\articles_Final_2016_01_04.txt"
    set "SecondFichier=Chemin_Vers_\articles_Final_2016_02ss_04.txt"
    set "FichierResultat=Chemin_Vers_\difference.txt"
     
    if exist "%FichierResultat%" del /F /S /Q "%FichierResultat%"
    for /F "tokens=* delims=." %%a in (%PremierFichier%) do (
        call :myInnerLoop "%%a"
    )
    goto :eof
     
    :myInnerLoop
    for /F "tokens=* delims=." %%b in (%SecondFichier%) do (
        if "%~1"=="%%b" (
            goto :next
        )
    )
    echo %~1 >> "%FichierResultat%"
     
    :next
    goto :eof
    exit

    Et pour la partie récupération des deux derniers fichiers modifiés:
    http://stackoverflow.com/a/11934361

    Ce qui donne:

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo off & cls
    SETLOCAL EnableDelayedExpansion
     
    set "Dossier=Chemin_Vers_Dossier"
    set /a "n=0, limit=2"
     
    for /F "delims=" %%a in ('dir /B /A-D /O-D /T:W "%Dossier%\*.*"') do (
       echo "%%a"
       2>nul set /a "n+=1, 1/(limit-n)"||goto :break
    )
    :break
    pause
    exit
    Ce code fonctionne, à voir si il fonctionne pour vous.

  3. #3
    Membre averti
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Janvier 2016
    Messages : 23
    Par défaut
    Merci devilsnake88 pour ton aide.

    Si je teste c'est ok.
    La seule chose à faire maintenant c'est que pour

    set "PremierFichier=Chemin_Vers_\articles_Final_yyyy_mm_jj.txt"
    set "SecondFichier=Chemin_Vers_\articles_Final__yyyy_mm_jj.txt"

    il faut que se soit les deux fichiers récupérés dans l'le script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo off & cls
    SETLOCAL EnableDelayedExpansion
     
    set "Dossier=.\HISTO\Final"
    set /a "n=0, limit=2"
     
    for /F "delims=" %%a in ('dir /B /A-D /O-D /T:W "%Dossier%\*.*"') do (
       echo "%%a"
       2>nul set /a "n+=1, 1/(limit-n)"||goto :break
    )
    :break
    pause
    exit
    J'essaye de résoudre ce problème.
    @+

  4. #4
    Membre averti
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Janvier 2016
    Messages : 23
    Par défaut
    Voilà la réponse finale

    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
    @echo off
    cls
    SETLOCAL EnableDelayedExpansion
    
    set "Dossier=.\HISTO\FINAL"
    set /a "n=0, limit=2"
    
    for /F "delims=" %%a in ('dir /B /A-D /O-D /T:W "%Dossier%\*.*"') do (
       echo "%%a"
    
       set "file[!n!]=%%a"
    
       2>nul set /a "n+=1, 1/(limit-n)"||goto :break
    )
    :break
    
    set file
    
    	findstr /v /g:%Dossier%\%file[0]% %Dossier%\%file[1]% >>difference.txt
    	::fc /L %Dossier%\%file[0]% %Dossier%\%file[1]% >>difference.txt
    pause
    exit

    NB si je mets fc /L %Dossier%\%file[0]% %Dossier%\%file[1]% >>difference.txt
    J'ai le détails de ce qui diffère dans les deux fichiers.

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

Discussions similaires

  1. Différence entre deux dates
    Par Azharis dans le forum Access
    Réponses: 3
    Dernier message: 11/01/2006, 10h58
  2. [access] différence entre deux champs
    Par loutente dans le forum Langage SQL
    Réponses: 1
    Dernier message: 17/08/2005, 15h57
  3. Différence entre deux dates
    Par pittzz dans le forum Oracle
    Réponses: 5
    Dernier message: 18/07/2005, 12h24
  4. Comment obtenir la différence entre deux dates ?
    Par jbat dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2005, 09h34
  5. Résultats erroné différence entre deux types TDateTime
    Par Alghero dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/03/2004, 17h03

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