Results 1 to 6 of 6
  1. #1
    Join Date
    Oct 2014
    Location
    Paris
    Posts
    11

    Question Beyond Compare 3 - Comparaison automatique de multiple fichier (Data Compare)

    Bonjour à tous,

    Je vous remercie pour le travail effectué sur Beyond Compare qui fonctionne vraiment bien !

    Dans le cadre d'un travail de non régression, je dois comparer à l'aide de Beyond Compare des fichiers .txt issues de deux environnements distincts en définissant mes propres clés de comparaison.
    Seulement voilà, il y a des centaines de fichiers txt générés à comparer, ce qui nous fait perdre un temps fou.
    Alors je me suis lancé dans divers script qui permettaient de lancer Beyond compare avec ce paramètrage :

    bcscript.txt
    Code:
    log verbose append:"C:\Users\xxxx\yyyyyy\POCBeyondCompare\logs\logtest.txt"
    beep
    load "%1" "%2"
    expand all
    select all
    data-report layout:side-by-side options:display-mismatches,ignore-unimportant output-to:"%3" output-options:wrap-word,html-custom="../styles.css"
    run_compare.bat
    Code:
    "C:\\xxxxxxxx\\Scooter Software\\Beyond Compare\\bcompare.exe" "@C:\\Users\\xxxxxx\\yyyyyy\\POCBeyondCompare\\bcscript.txt" "C:\\Users\\xxxxxx\\yyyyyy\\POCBeyondCompare\\A" "C:\\Users\\xxxxxx\\yyyyyy\\POCBeyondCompare\\B" "C:\\xxxxxx\\yyyyyy\\Documents\\POCBeyondCompare\\Results\\bcreport_2209.html"
    Seulement voilà, on peut apparement pas choisir les clés de comparaison en passant par les scripts.

    J'ai alors vu qu'on pouvait les modifier dans les BCSessions.xml dans la balise
    HTML Code:
    <Keys Value="2;3;7" />
    Je me suis alors lancé dans le développement d'un programme qui me générait un BCSessions.xml en fonction de paramètrage défini dans une feuille Excel, ce xml généré contient différents
    HTML Code:
    <TDataCompareSession>
    .

    J'ai ici le BCSessions.xml généré
    HTML Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <BCSessions>
        <TSessionFolder>
            <Items>
                <TDataCompareSession Value="file1.txt and file2.txt">
                    <Rules>
                        <Cols>
                            <Keys Value="2;4;8;10"/>
                        </Cols>
                    </Rules>
                    <Specs>
                        <Left Value="C:/Users/981210/Documents/POCBeyondCompare/A/file1.txt"/>
                        <Right Value="C:/Users/981210/Documents/POCBeyondCompare/B/file2.txt"/>
                    </Specs>
                    <State>
                        <DisplayFilter Value="[showLeftMod, showRightMod, showDiffMod]"/>
                    </State>
                </TDataCompareSession>
                <TDataCompareSession Value="monfichier1 and monfichier2">
                    <Rules>
                        <Cols>
                            <Keys Value="2;4;8;11"/>
                        </Cols>
                    </Rules>
                    <Specs>
                        <Left Value="C:/Users/981210/Documents/POCBeyondCompare/A/file3.txt"/>
                        <Right Value="C:/Users/981210/Documents/POCBeyondCompare/B/file4.txt"/>
                    </Specs>
                    <State>
                        <DisplayFilter Value="[showLeftMod, showRightMod, showDiffMod]"/>
                    </State>
                </TDataCompareSession>
                <TDataCompareSession Value="file5.txt and file6.txt">
                    <Rules>
                        <Cols>
                            <Keys Value="2;4;8;12"/>
                        </Cols>
                    </Rules>
                    <Specs>
                        <Left Value="C:/Users/981210/Documents/POCBeyondCompare/A/file5.txt"/>
                        <Right Value="C:/Users/981210/Documents/POCBeyondCompare/B/file6.txt"/>
                    </Specs>
                    <State>
                        <DisplayFilter Value="[showLeftMod, showRightMod, showDiffMod]"/>
                    </State>
                </TDataCompareSession>
            </Items>
        </TSessionFolder>
    </BCSessions>
    Une fois fénéré je glisse ce BCSession dans les AppData de BeyondCompare, mais en executant ce dernier, il ne prend pas en compte ma configuration...

    Je commence à perdre espoir, n'y aurait il pas une solution à mon problème ?

    (Petit rappel pour ce long poste, le problème : je souhaiterai comparer automatiquement plusieurs fichier .txt en définissant mes propres clés de comparaison)

    Merci !

    Chaveex

  2. #2
    Join Date
    Oct 2007
    Location
    Madison, WI
    Posts
    11,788

    Default

    Hello,

    Excellent setup, and exactly what I would recommend in this case except for one detail:

    The script would always use the default Data Compare session settings. It does not support individual, saved Data Compare sessions. You would need to run the program to edit BCSessions.xml, edit the default data session, run the script to generate the report, then run and edit the BCSessions.xml again to alter the default data session for the next script. This way, you are editing the same saved session before each report.

    Adding the ability to define the keys for scripting is on our wishlist.


    translate.google.com
    Bonjour,

    Excellente configuration, et c'est exactement ce que je recommande dans ce cas à un détail près:

    Le script serait toujours utiliser les données par défaut Comparez les paramètres de session. Il ne prend pas en charge individuelle, les données enregistrées Comparez sessions. Vous auriez besoin pour exécuter le programme à modifier BCSessions.xml, modifier la session de données par défaut, exécutez le script pour générer le rapport, puis exécutez et modifier à nouveau la BCSessions.xml de modifier la session de données par défaut pour le script suivant. De cette façon, vous êtes en train d'éditer la même session enregistrée avant chaque rapport.

    Ajout de la possibilité de définir les clés de script est sur ​​notre liste.
    Aaron P Scooter Software

  3. #3
    Join Date
    Oct 2014
    Location
    Paris
    Posts
    11

    Default Automation with BCState.xml ?

    Hello Aaron !

    Thank you for your answer !
    I had tried this way, by editing BCSessions while Beyond Compare was running, and it worked.
    But I am afraid to do this more than hundred times.. I have more than 100 files to compare.

    There is not a way to run Beyond Compare one time with a specific Sessions where I put my hundred files to compare and their keys ? (using Data Compare)

    And I have seen also a BCState.xml where I put something like this :

    HTML Code:
    <TDataCompareState>
    		<LeftMRUSpecs>
    			<_0 Value="C:\Users\xxxxxx\yyyyyyy\POCBeyondCompare\A\file3.txt"/>
    			<_1 Value="C:\Users\xxxxxx\yyyyyyy\POCBeyondCompare\A\risks.txt"/>
    			<_2 Value="C:\Users\xxxxxx\yyyyyyy\POCBeyondCompare\A\file5.txt"/>
    			<_3 Value="C:\Users\xxxxxx\yyyyyyy\POCBeyondCompare\B\file6.txt"/>
    			<_4 Value="C:\Users\xxxxxx\yyyyyyy\POCBeyondCompare\A\file1.txt"/>
    			<_5 Value="C:\Users\xxxxxx\yyyyyyy\POCBeyondCompare\BCCompareXmlGenerator-1.0.0\src\main\resources\BCSession-output.xml"/>
    			<_6 Value="C:\Users\xxxxxx\yyyyyyy\POCBeyondCompare\TargetFiles\CRID_KONDOR.csv"/>
    			<_7/>
    		</LeftMRUSpecs>
    		<MRUFonts>
    			<_0 Value="Consolas;10"/>
    		</MRUFonts>
    		<RightMRUSpecs>
    			<_0 Value="C:\Users\xxxxxx\yyyyyyy\POCBeyondCompare\B\file4.txt"/>
    			<_1 Value="C:\Users\xxxxxx\yyyyyyy\POCBeyondCompare\B\risks.txt"/>
    			<_2 Value="C:\Users\xxxxxx\yyyyyyy\POCBeyondCompare\B\file6.txt"/>
    			<_3 Value="C:\Users\xxxxxx\yyyyyyy\POCBeyondCompare\B\file2.txt"/>
    			<_4 Value="C:\Users\xxxxxx\yyyyyyy\POCBeyondCompare\BCCompareXmlGenerator-1.0.0\src\main\resources\BCSessions.xml"/>
    			<_5 Value="C:\Users\xxxxxx\yyyyyyy\POCBeyondCompare\BCCompareXmlGenerator-1.0.0\src\main\resources\BCSession-output.xml"/>
    			<_6 Value="C:\Users\xxxxxx\yyyyyyy\POCBeyondCompare\ReferenceFiles\CRID_KONDOR.csv"/>
    			<_7/>
    		</RightMRUSpecs>
    		<SessionFormPosStr Value="522;233;1055;775"/>
    	</TDataCompareState>
    In this way Beyond Compare had saved my configuration with files to compare whereas BCSessions.xml is always reset and my files desappear from the loading session.
    If I mix a set-up with BCState and BCSession, Can I get my automate with matching keys ?

    Chaveex.

    FRANCAIS

    Bonjour Aaron,

    Merci pour ta réponse !
    J'ai essayé ta solution, en modifiant BCsessions alors que Beyond Compare est entrain de tourner, et ça à marché.
    Mais j'ai peur qu'en utilisant ce moyen, je doive réitérer l'opération plus de 100 fois, en effet j'ai plus de 100 fichiers à comparer...

    Il n'y a pas un moyen de lancer une fois Beyond Compare avec une Session spécifique ou je peux mettre mes 100 fichiers à comparer ainsi que leurs clé de matching ? (en utilisant le mode Data Compare)

    J'ai vu également un fichier BCState.xml où j'ai inséré des lignes et cela donne le resultat suivant (voir au dessus la partie HTML Code)

    De cette manière Beyond Compare a sauvegardé ma configuration avec les fichiers à comparer alors que BCSessions.xml est toujours remis à 0 et mes fichiers disparaissent de 'loading session" de Beyond Compare.
    Si je fais un mix des set-up BCState et BCSession, Puis je atteindre cette automatisation avec les matching keys ?

    Chaveex.

  4. #4
    Join Date
    Oct 2014
    Location
    Paris
    Posts
    11

    Default

    If I understand,

    Beyond Compare does not take an edited BCSessions.xml into account if the tag
    HTML Code:
    <LastModified />
    is not specified ?

    I tried to create a new BCSessions.xml by copy paste the one generated by Beyond Compare, and then I added a
    HTML Code:
    <TDataCompareSession>
    containing new files,theirs matching keys and finally a random LastModified date and it did take it into account.

    So does it will work if I generate a big BCSessions.xml containing all my files path with a ramdom LastModified date for each file ?

    FRANCAIS

    Si je comprend bien,

    Beyond Compare ne prend pas en compte les BCSessions.xml édité si la balise
    HTML Code:
    <LastModified />
    n'est pas spécifié ?

    J'ai essayé de créer un nouveau BCSessions.xml en copiant collant celui généré par Beyond Compare, ensuiste j'ai ajouté mon propre
    HTML Code:
    <TDataCompareSession>
    contenant un nouveau fichier ainsi que ses clés et finalement une LastModified date aléatoire et BC l'a pris en compte !

    Alors est ce que ca va fonctionner si je génère un enorme BCSessions.xml contenant le chemin de tous mes fichiers avec une date random pour chacun ?


    Chaveex

  5. #5
    Join Date
    Oct 2007
    Location
    Madison, WI
    Posts
    11,788

    Default

    Hello,

    What I would recommend is editing the default Data Compare once in the GUI by defining the key columns as non-default. This will create the necessary XML structure. You can then modify just the Key Column node to define which items should be keys before each run.

    You shouldn't need to edit the BCState.xml. The MRU list is defining the dropdown control of the last used files before the loaded files (to easily switch to files used in the past). The Session is what defines the currently loaded files. The Script does not use the the default Data Compare to control which files are loaded; it is only using the Session Settings (including Unimportance, column order, or Key columns). The files for the data-report are passed in as parameters in the script, or by selecting them from a folder loaded in script:

    bcompare.exe bcscript.txt "c:\file1.txt" "c:\file2.txt" "c:\bcreport.txt"

    data-report layout:side-by-side options:display-mismatches,ignore-unimportant output-to:"%3" output-options:wrap-word,html-custom="../styles.css" "%1" "%2"


    translate.google.com
    Bonjour,

    Ce que je recommande est de modifier les données par défaut Comparer fois dans l'interface graphique en définissant les colonnes clés non-défaut. Cela va créer la structure XML nécessaire. Vous pouvez ensuite modifier simplement le nœud Colonne de la clé de définir les éléments qui doivent être des clés avant chaque course.

    Vous ne devriez pas avoir à modifier le BCState.xml. La liste MRU est de définir le contrôle de la liste déroulante des derniers fichiers utilisés avant les fichiers chargés (de passer facilement de fichiers utilisés dans le passé). La session est ce qui définit les fichiers actuellement chargés. Le script n'utilise pas le défaut de comparaison de données pour contrôler les fichiers sont chargés; il utilise uniquement les paramètres de la session (y compris l'insignifiance, l'ordre des colonnes, ou des colonnes clés). Les fichiers de données-rapport sont passés en tant que paramètres dans le script, ou en les sélectionnant dans un dossier chargé dans le script:

    bcompare.exe bcscript.txt "c:\file1.txt" "c:\file2.txt" "c:\bcreport.txt"

    data-report layout:side-by-side options:display-mismatches,ignore-unimportant output-to:"%3" output-options:wrap-word,html-custom="../styles.css" "%1" "%2"
    Aaron P Scooter Software

  6. #6
    Join Date
    Oct 2014
    Location
    Paris
    Posts
    11

    Default

    Thank you Aaron !

    I have done what you advised me to do. I did not run the following command as you said :
    bcompare.exe bcscript.txt "c:\file1.txt" "c:\file2.txt" "c:\bcreport.txt"
    And it does reports all files I wanted. So finally I have a semi automatically comparator. Here is the summary of what I have done while Scooter team develop the possibility to set keys into a script.

    First step, I generate a XML file with a program I have made which read from an excel the values I want
    exccel_bc.png

    Then my XML is generated :

    HTML Code:
    <TDataCompareSession Value="sahibou.txt and sahibou.txt">
                    <LastModified Value="09/10/2014 17:35:14"/>
                    <Rules>
                        <Cols>
                            <Keys Value="1;3"/>
                        </Cols>
                    </Rules>
                    <Specs>
                        <Left Value="C:/Users/xxxx/yyyy/POCBeyondCompare/A/sahibou.txt"/>
                        <Right Value="C:/Users/xxxx/yyyy/POCBeyondCompare/B/sahibou.txt"/>
                    </Specs>
                    <State>
                        <DisplayFilter Value="[showLeftMod, showRightMod, showDiffMod]"/>
                    </State>
                </TDataCompareSession>
                <TDataCompareSession Value="biba.txt and babi.txt">
                    <LastModified Value="05/10/2014 17:35:14"/>
                    <Rules>
                        <Cols>
                            <Keys Value="2;4;7"/>
                        </Cols>
                    </Rules>
                    <Specs>
                        <Left Value="C:/Users/xxxx/yyyy/POCBeyondCompare/A/biba.txt"/>
                        <Right Value="C:/Users/xxxx/yyyy/POCBeyondCompare/B/babi.txt"/>
                    </Specs>
                    <State>
                        <DisplayFilter Value="[showLeftMod, showRightMod, showDiffMod]"/>
                    </State>
                </TDataCompareSession>
    Next, as Aaron said, I open Beyond Compare, run a session, edit the BCSessions.xml by replacing <TDataCompareSession> by my <TDataCompareSession> even if there are several tags.

    And finally I run this script (.bat) :

    Code:
    "C:\\zzzz\\Scooter Software\\Beyond Compare\\bcompare.exe" "@C:\\Users\\xxxx\\yyyy\\POCBeyondCompare\\bcscript.txt" "C:\\Users\\xxxx\\yyyy\\POCBeyondCompare\\A" "C:\\Users\\xxxx\\yyyy\\POCBeyondCompare\\B" "C:\\Users\\xxxx\\yyyy\\POCBeyondCompare\\Results\\bcreport_2209.html"
    with the following bcscript.txt
    Code:
    log verbose append:"C:\Users\xxxx\yyyy\POCBeyondCompare\logs\logtest.txt"
    beep
    load "%1" "%2"
    expand all
    select all
    data-report layout:side-by-side options:display-mismatches,ignore-unimportant output-to:"%3" output-options:wrap-word,html-custom="../styles.css"
    And finally I got my report !!

    sahi.png

    I hope it would help someone in the futur.
    Thank you again Aaron !

    Chaveex


    FRANCAIS

    Merci beaucoup Aaron !

    J'ai fait ce que tu m'as conseillé de faire. J'ai lancé la commande suivant comme tu disais :
    bcompare.exe bcscript.txt "c:\file1.txt" "c:\file2.txt" "c:\bcreport.txt"
    Et cela à créé le reports que j'attendais. Donc finalement, j'ai mon comparateur semi automatique. Et voici le résumé de ce que j'ai fait en attendant que les clés inclues dans les scripts soient développé par l'équipe Scooter :

    Premièrement, j'ai généré un fichier XML avec un programme que j'ai développé qui va lire dans un fichier Excel et qui créer un XML avec les valeurs contenu dans le feuillet. (Voir au dessus)

    Le XML généré est visible au début du post.

    Ensuite, comme Aaron expliquait, j'ai ouvert Beyond Compare, lancé une session à blanc, pour générer un BCSessions.xml, et je l'ai éditer pour remplacer les balises <TDataCompare> par celle que j'ai généré même si il y en a plusieurs.

    Et j'ai finalement lancé les scripts (voir plus haut) pour avoir un report de mes comparaisons (voir screen plus haut également)

    Merci Aaron !

    Chaveex
    Last edited by Chaveex; 06-Oct-2014 at 08:31 AM.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •