Comparaison de fichier dans folder avec différentes regles

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • jray
    New User
    • Jan 2014
    • 2

    Comparaison de fichier dans folder avec différentes regles

    Bonjour,

    Nous pouvons aujourd’hui facilement comparer différents fichiers csv, en indiquant les clefs, et en sauvegardant les sessions pour garder les règles.

    Seulement voila, j'ai besoin aujourd'hui de comparer 2 dossiers, chacun de ces dossiers comporte une liste de fichiers, avec autant de fichiers dans les 2 dossiers.

    Les fichiers sont tous différents, ce ne sont pas les mêmes colonnes, et donc les règles doivent être différentes pour chaque fichier à comparer, notamment, les clefs. Mais tous les jours, ce sont les mêmes noms de fichier a comparer avec les mêmes règles.

    Je dois faire ceci de façon récurrente, est-il possible d’automatiser cela par script? J’ai l’impression que non, j’ai l’impression que l’on peut appliquer une seule regle.

    L’idéale serait de pouvoir enregistrer toutes les règles, et de lancer chaque comparaison de fichier avec sa propre règle.

    Je n’ai pas encore réalisé de script BC…


    Merci d’avance pour votre aide.
  • mdes
    Moderator
    • Apr 2008
    • 251

    #2
    Un début de solution ?

    Bonjour Jray,

    Je suppose que tu travailles avec BC3 et pas avec BC4 béta (qui n'est qu'en anglais actuellement).

    Exemple :
    J'ai 4 fichiers (hier\ contient les fichiers d'un jour, et aujourd\ contient les fichiers d'un autre jour) :

    hier\jray1.txt
    Code:
    k11;x12
    hier\jray2.txt
    Code:
    k21;a22;a23
    aujourd\jray1.txt
    Code:
    k11;y12
    aujourd\jray2.txt
    Code:
    k21;b22;b23
    Si j'ai bien compris, les noms de fichiers sont toujours les mêmes de jour en jour ? Donc dans l'exemple ci-dessus :
    les fichiers associés à la 1ère règle s'appelleront toujours jray1.txt, et
    les fichiers associés à la 2e règle s'appelleront toujours jray2.txt.

    Si c'est le cas, il te suffit d'avoir une session par nom de fichier :
    • Session jray1
    • Session jray2
    • ...


    Par contre, pour automatiser, il faudrait que les valeurs par défaut correspondent à ce que tu souhaites. À ce moment le script suivant pourrait faire le boulot :
    Code:
    log normal "Journal_jray.log"
    
    # à lancer via BCOMPARE.EXE @"<nom de ce script>" "<répertoire d'hier>" "<répertoire d'aujourd'hui>" "<répertoire du journal>"
    
    data-report layout:side-by-side output-to:%3\jray1.log "%1\jray1.txt" "%2\jray1.txt"
    data-report layout:side-by-side output-to:%3\jray2.log "%1\jray2.txt" "%2\jray2.txt"
    ...et ainsi de suite pour les autres fichiers
    La commande MSDOS pour lancer ce script serait alors : (à mettre dans un fichier batch (.BAT ou .CMD) ou non)
    Code:
    "C:\Beyond Compare 3\BCompare.exe" @"C:\Temp\BC3.Test\Script_jray.txt" "hier" "aujourd" "jray.Journaux"
    Cela correspond-il à ce que tu souhaites ?

    @+
    Michel.
    Michel Dessaintes
    Modérateur du Forum Francophone & Traducteur Officiel de BC2/BC3/BC4 en Français

    Comment

    • jray
      New User
      • Jan 2014
      • 2

      #3
      Bonjour Michel,

      Merci pour ton aide, effectivement, j’utilise BC3, et il est en Français.
      Oui, tu as bien compris, les noms de fichiers sont toujours les mêmes de jour en jour, je comprends ton début de solution.

      Pour les règles, si j’ai bien compris, je peux donc les enregistrées, une par une, pour chaque comparaison de fichier, par session, exemple :
      - La comparaison de hier\jray1.txt et aujourd\jray1.txt se fera dans la session jray1

      Par contre, dans ton script, soit dans la ligne suivante :
      Code:
      data-report layout:side-by-side output-to:%3\jray1.log "%1\jray1.txt" "%2\jray1.txt"
      et bien je ne vois ou est la règle, soit la session « jray », est-ce que la session sera lancée automatiquement, grâce aux noms de fichier qui ne changent pas?

      Merci.

      Comment

      • mdes
        Moderator
        • Apr 2008
        • 251

        #4
        Originally posted by jray
        Par contre, dans ton script, soit dans la ligne suivante :
        Code:
        data-report layout:side-by-side output-to:%3\jray1.log "%1\jray1.txt" "%2\jray1.txt"
        et bien je ne vois ou est la règle, soit la session « jray », est-ce que la session sera lancée automatiquement, grâce aux noms de fichier qui ne changent pas?
        Tu ne la vois pas parce qu'elle n'y est pas; c'est pourquoi, je disais
        il faudrait que les valeurs par défaut correspondent à ce que tu souhaites
        parce que je ne vois pas comment on peut changer le répertoire d'une session de comparaison de données.

        Mais je continue à chercher... Maybe somebody from the Scooter Software's team could propose a solution?
        Michel Dessaintes
        Modérateur du Forum Francophone & Traducteur Officiel de BC2/BC3/BC4 en Français

        Comment

        • mdes
          Moderator
          • Apr 2008
          • 251

          #5
          Je ne vois qu'une solution :
          Pour chaque type de fichier, éditer le fichier BCSessions.xml par un programme batch externe, puis lancer BCompare avec la session modifiée.
          Michel Dessaintes
          Modérateur du Forum Francophone & Traducteur Officiel de BC2/BC3/BC4 en Français

          Comment

          • Aaron
            Team Scooter
            • Oct 2007
            • 16000

            #6
            Hello,

            If I understand the scenario correctly, we need different Data Session Settings for each script call? Editing the BCSessions.xml's default Data Compare session settings might be easier. Alternatively, this can be configured in the graphical interface, then called in script.

            Launch the Folder Compare session, which is the only session type we currently support loading in script. In the Folder Compare, set your filename filter to only show jray1.log. Expand All, and select your jray1.log file pair, which should be aligned automatically because both files have the same name. If double clicking the files does not automatically open the Data Compare, you will need to create a new Data format in the Tools menu -> File Formats with the mask of *.log or jray1.log.

            When you double click the file pair and it launches the Data Compare session, alter the Session menu -> Session Settings. Before clicking "OK", alter the dropdown from "Use for this view only" to "Apply for these/all files in the Parent session."

            Now, close the child Data Compare and save the parent Folder Compare.

            To test, close and reload the parent Folder Compare, double click your files, and the Session Settings should still be working.

            From the Parent Folder Compare, select your two files, right click, and generate a File Report.

            This can also be done from script using:
            Code:
            load folderSessionName
            expand all
            select all.files
            data-report layout:side-by-side output-to:%3\jray1.log
            translate.google.com
            Bonjour ,

            Si je comprends bien le scénario correctement , nous avons besoin de paramètres de session de données différentes pour chaque appel de script ? Modification de données par défaut de l ' BCSessions.xml Comparez paramètres de la session pourrait être plus facile . Sinon , cela peut être configuré dans l'interface graphique , alors appelé dans le script.

            Lancez le dossier Comparer session, qui est le seul type de session, nous soutenons actuellement chargement dans le script. Dans le dossier Comparez , réglez votre filtre de nom de fichier pour ne montrer que jray1.log . Développer tout , et sélectionnez votre paire de fichiers jray1.log , qui devrait être aligné automatiquement car les deux fichiers ont le même nom . Si double-cliquant sur les fichiers ne s'ouvre pas automatiquement la comparaison de données , vous aurez besoin de créer un nouveau format de données dans le menu Outils - . > Formats de fichiers avec le masque de * Connectez-vous ou jray1.log .

            Lorsque vous double- cliquez sur la paire de fichiers et il lance la comparaison de données session, modifier le menu de la session - > Paramètres de session . Avant de cliquer sur "OK" , modifier la liste déroulante de " Utilisez ce point de vue seulement" à "Appliquer ces / tous les fichiers dans la session de parent . "

            Maintenant , fermez les données de l'enfant Comparez et économisez le dossier parent Comparer .

            Pour tester , fermer et recharger le dossier parent Comparer , double-cliquez sur vos fichiers et les paramètres de la session doivent encore travailler .

            Dans le dossier parent Comparez , sélectionnez vos deux fichiers , clic droit, et de générer un rapport de dossier .

            Cela peut aussi être fait à partir de script à l'aide :
            Code:
            load folderSessionName
            expand all
            select all.files
            data-report layout:side-by-side output-to:%3\jray1.log
            Aaron P Scooter Software

            Comment

            • mdes
              Moderator
              • Apr 2008
              • 251

              #7
              Oui, Aaron a une excellent idée : utiliser les formats de fichiers (1 format par nom de fichier), en mettant comme filtre le nom du fichier ("jray1.txt", "jray2.txt",...). Le reste est inchangé (cf. ma 1ère réponse).
              Michel Dessaintes
              Modérateur du Forum Francophone & Traducteur Officiel de BC2/BC3/BC4 en Français

              Comment

              Working...