[INFO] Comparer deux fichiers texte avec PowerShell
8 réponses
Jacques Barathon [MS]
Hello,
Pour info, je viens de publier sur mon blog un script PowerShell qui permet
de comparer deux fichiers texte et d'obtenir la liste des différences ligne
par ligne.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MCI \(ex do ré Mi chel la si do\) [MVP]
Bonsoir !
Ci-dessous, un batch (OK, il est super-compliqué), pour comparer deux fichiers texte.
Ce script affiche les lignes qui sont différentes, avec les numéros de lignes, et avec, pour chacune, la ligne précédente et la ligne suivante (pour avoir une meilleure visibilité du contexte).
Certes, ce batch est un très mauvais exemple pour apprendre PowerShell ; certes, il est sans doute beaucoup plus difficile à comprendre (surtout pour des powershellophiles).
Le code-source :
fc /L /N %1 %2
@-salutations
Michel Claveau
Au fait, j'ai commencé à re-écrire un site sur le Batch. Il n'est pas fini, mais est déjà regardable. C'est là : http://ponx.org/ponx/batch
Bonsoir !
Ci-dessous, un batch (OK, il est super-compliqué), pour comparer deux fichiers texte.
Ce script affiche les lignes qui sont différentes, avec les numéros de lignes, et avec, pour
chacune, la ligne précédente et la ligne suivante (pour avoir une meilleure visibilité du contexte).
Certes, ce batch est un très mauvais exemple pour apprendre PowerShell ; certes, il est sans doute
beaucoup plus difficile à comprendre (surtout pour des powershellophiles).
Le code-source :
fc /L /N %1 %2
@-salutations
Michel Claveau
Au fait, j'ai commencé à re-écrire un site sur le Batch. Il n'est pas fini, mais est déjà
regardable.
C'est là : http://ponx.org/ponx/batch
Ci-dessous, un batch (OK, il est super-compliqué), pour comparer deux fichiers texte.
Ce script affiche les lignes qui sont différentes, avec les numéros de lignes, et avec, pour chacune, la ligne précédente et la ligne suivante (pour avoir une meilleure visibilité du contexte).
Certes, ce batch est un très mauvais exemple pour apprendre PowerShell ; certes, il est sans doute beaucoup plus difficile à comprendre (surtout pour des powershellophiles).
Le code-source :
fc /L /N %1 %2
@-salutations
Michel Claveau
Au fait, j'ai commencé à re-écrire un site sur le Batch. Il n'est pas fini, mais est déjà regardable. C'est là : http://ponx.org/ponx/batch
moi
Notre ami MCI (ex do ré Mi chel la si do) [MVP] tapota :
Bonsoir !
Ci-dessous, un batch (OK, il est super-compliqué), pour comparer deux fichiers texte.
Le code-source :
fc /L /N %1 %2
;o)
Enfin une source qui ne craint pas les coupures intempestives de lignes dues aux lecteurs de news ;o))))
A+
HB
Notre ami MCI (ex do ré Mi chel la si do) [MVP] tapota :
Bonsoir !
Ci-dessous, un batch (OK, il est super-compliqué), pour comparer
deux
fichiers texte.
Le code-source :
fc /L /N %1 %2
;o)
Enfin une source qui ne craint pas
les coupures intempestives de lignes
dues aux lecteurs de news ;o))))
Notre ami MCI (ex do ré Mi chel la si do) [MVP] tapota :
Bonsoir !
Ci-dessous, un batch (OK, il est super-compliqué), pour comparer deux fichiers texte.
Le code-source :
fc /L /N %1 %2
;o)
Enfin une source qui ne craint pas les coupures intempestives de lignes dues aux lecteurs de news ;o))))
A+
HB
Jacques Barathon [MS]
"MCI (ex do ré Mi chel la si do) [MVP]" wrote in message news:
Bonsoir !
Ci-dessous, un batch (OK, il est super-compliqué), pour comparer deux fichiers texte.
Ce script affiche les lignes qui sont différentes, avec les numéros de lignes, et avec, pour chacune, la ligne précédente et la ligne suivante (pour avoir une meilleure visibilité du contexte).
Certes, ce batch est un très mauvais exemple pour apprendre PowerShell ; certes, il est sans doute beaucoup plus difficile à comprendre (surtout pour des powershellophiles).
Le code-source :
fc /L /N %1 %2
Excellent, merci Michel pour ce rafraichissant retour aux racines! :-)
Cependant, si tu m'as fait l'honneur de lire mon blog, tu auras noté que la commande fc n'a pas les fonctionnalités de base de mon script et qui étaient la raison première de son écriture:
- comptage du nombre de caractères différents - récupération des caractères différents et de leur position dans un tableau
Cela dit, tu as bien fait de me rappeler l'existence de fc:
- son utilisation reste possible à partir de PowerShell - certaines fonctionnalités sont intéressantes, je les intégrerai dans une prochaine version de mon script :-)
Jacques
"MCI (ex do ré Mi chel la si do) [MVP]" <enleverlesO.OmcO@OmclaveauO.com>
wrote in message news:u0NFd7oEIHA.4748@TK2MSFTNGP06.phx.gbl...
Bonsoir !
Ci-dessous, un batch (OK, il est super-compliqué), pour comparer deux
fichiers texte.
Ce script affiche les lignes qui sont différentes, avec les numéros de
lignes, et avec, pour chacune, la ligne précédente et la ligne suivante
(pour avoir une meilleure visibilité du contexte).
Certes, ce batch est un très mauvais exemple pour apprendre PowerShell ;
certes, il est sans doute beaucoup plus difficile à comprendre (surtout
pour des powershellophiles).
Le code-source :
fc /L /N %1 %2
Excellent, merci Michel pour ce rafraichissant retour aux racines! :-)
Cependant, si tu m'as fait l'honneur de lire mon blog, tu auras noté que la
commande fc n'a pas les fonctionnalités de base de mon script et qui étaient
la raison première de son écriture:
- comptage du nombre de caractères différents
- récupération des caractères différents et de leur position dans un tableau
Cela dit, tu as bien fait de me rappeler l'existence de fc:
- son utilisation reste possible à partir de PowerShell
- certaines fonctionnalités sont intéressantes, je les intégrerai dans une
prochaine version de mon script :-)
"MCI (ex do ré Mi chel la si do) [MVP]" wrote in message news:
Bonsoir !
Ci-dessous, un batch (OK, il est super-compliqué), pour comparer deux fichiers texte.
Ce script affiche les lignes qui sont différentes, avec les numéros de lignes, et avec, pour chacune, la ligne précédente et la ligne suivante (pour avoir une meilleure visibilité du contexte).
Certes, ce batch est un très mauvais exemple pour apprendre PowerShell ; certes, il est sans doute beaucoup plus difficile à comprendre (surtout pour des powershellophiles).
Le code-source :
fc /L /N %1 %2
Excellent, merci Michel pour ce rafraichissant retour aux racines! :-)
Cependant, si tu m'as fait l'honneur de lire mon blog, tu auras noté que la commande fc n'a pas les fonctionnalités de base de mon script et qui étaient la raison première de son écriture:
- comptage du nombre de caractères différents - récupération des caractères différents et de leur position dans un tableau
Cela dit, tu as bien fait de me rappeler l'existence de fc:
- son utilisation reste possible à partir de PowerShell - certaines fonctionnalités sont intéressantes, je les intégrerai dans une prochaine version de mon script :-)
Jacques
MCI \(ex do ré Mi chel la si do\) [MVP]
Salut, Jacques !
fc n'a pas les fonctionnalités de base de mon script
Et, surtout, fc n'apprend rien ; alors que ton script peut être très utile, pour se former à PowerShell.
Sinon, il y a une fonctionnalité de fc assez intéressante, que tu n'as pas (encore ?) reprise dans ton script : si un des deux fichiers comparés a une ligne de plus que l'autre, fc est capable de la voir, et continue la comparaison avec tenant compte du décalage de lignes. Alors que ton script va considérer toutes les lignes, au-delà de la ligne supplémentaire, comme différentes.
(pour fc, le paramètre pour définir le nb maxi de lignes de décalage, c'est /LBx)
@-salutations
Michel Claveau
PS : désolé pour le piège, ce genre de truc étant un vrai casse-tête à programmer...
Salut, Jacques !
fc n'a pas les fonctionnalités de base de mon script
Et, surtout, fc n'apprend rien ; alors que ton script peut être très utile, pour se former à
PowerShell.
Sinon, il y a une fonctionnalité de fc assez intéressante, que tu n'as pas (encore ?) reprise dans
ton script : si un des deux fichiers comparés a une ligne de plus que l'autre, fc est capable de la
voir, et continue la comparaison avec tenant compte du décalage de lignes. Alors que ton script va
considérer toutes les lignes, au-delà de la ligne supplémentaire, comme différentes.
(pour fc, le paramètre pour définir le nb maxi de lignes de décalage, c'est /LBx)
@-salutations
Michel Claveau
PS : désolé pour le piège, ce genre de truc étant un vrai casse-tête à programmer...
fc n'a pas les fonctionnalités de base de mon script
Et, surtout, fc n'apprend rien ; alors que ton script peut être très utile, pour se former à PowerShell.
Sinon, il y a une fonctionnalité de fc assez intéressante, que tu n'as pas (encore ?) reprise dans ton script : si un des deux fichiers comparés a une ligne de plus que l'autre, fc est capable de la voir, et continue la comparaison avec tenant compte du décalage de lignes. Alors que ton script va considérer toutes les lignes, au-delà de la ligne supplémentaire, comme différentes.
(pour fc, le paramètre pour définir le nb maxi de lignes de décalage, c'est /LBx)
@-salutations
Michel Claveau
PS : désolé pour le piège, ce genre de truc étant un vrai casse-tête à programmer...
Jacques Barathon [MS]
"MCI (ex do ré Mi chel la si do) [MVP]" wrote in message news:
Salut, Jacques !
fc n'a pas les fonctionnalités de base de mon script
Et, surtout, fc n'apprend rien ; alors que ton script peut être très utile, pour se former à PowerShell.
Sinon, il y a une fonctionnalité de fc assez intéressante, que tu n'as pas (encore ?) reprise dans ton script : si un des deux fichiers comparés a une ligne de plus que l'autre, fc est capable de la voir, et continue la comparaison avec tenant compte du décalage de lignes. Alors que ton script va considérer toutes les lignes, au-delà de la ligne supplémentaire, comme différentes.
(pour fc, le paramètre pour définir le nb maxi de lignes de décalage, c'est /LBx)
Si tu as l'occasion, tu pourras me donner un exemple d'utilisation? Je viens d'essayer avec deux fichiers au départ identiques, sur l'un des deux j'ai introduit une ligne vierge au milieu, et fc fic1.txt fic2.txt /u /n /lb1 me dit que la resynchronisation a échoué parce que les fichiers sont trop différents. J'ai également essayé de ne pas provoquer de décalage en me contentant de remplacer une ligne par une autre, même message. Il faut que je monte à /lb3 pour que le message d'erreur disparaisse. Curieux, alors qu'il n'y a qu'une ligne de différente et même aucun décalage de ligne dans mon deuxième exemple !
Jacques
"MCI (ex do ré Mi chel la si do) [MVP]" <enleverlesO.OmcO@OmclaveauO.com>
wrote in message news:uSv2JxuEIHA.5208@TK2MSFTNGP04.phx.gbl...
Salut, Jacques !
fc n'a pas les fonctionnalités de base de mon script
Et, surtout, fc n'apprend rien ; alors que ton script peut être très
utile, pour se former à PowerShell.
Sinon, il y a une fonctionnalité de fc assez intéressante, que tu n'as pas
(encore ?) reprise dans ton script : si un des deux fichiers comparés a
une ligne de plus que l'autre, fc est capable de la voir, et continue la
comparaison avec tenant compte du décalage de lignes. Alors que ton script
va considérer toutes les lignes, au-delà de la ligne supplémentaire, comme
différentes.
(pour fc, le paramètre pour définir le nb maxi de lignes de décalage,
c'est /LBx)
Si tu as l'occasion, tu pourras me donner un exemple d'utilisation? Je viens
d'essayer avec deux fichiers au départ identiques, sur l'un des deux j'ai
introduit une ligne vierge au milieu, et fc fic1.txt fic2.txt /u /n /lb1 me
dit que la resynchronisation a échoué parce que les fichiers sont trop
différents. J'ai également essayé de ne pas provoquer de décalage en me
contentant de remplacer une ligne par une autre, même message. Il faut que
je monte à /lb3 pour que le message d'erreur disparaisse. Curieux, alors
qu'il n'y a qu'une ligne de différente et même aucun décalage de ligne dans
mon deuxième exemple !
"MCI (ex do ré Mi chel la si do) [MVP]" wrote in message news:
Salut, Jacques !
fc n'a pas les fonctionnalités de base de mon script
Et, surtout, fc n'apprend rien ; alors que ton script peut être très utile, pour se former à PowerShell.
Sinon, il y a une fonctionnalité de fc assez intéressante, que tu n'as pas (encore ?) reprise dans ton script : si un des deux fichiers comparés a une ligne de plus que l'autre, fc est capable de la voir, et continue la comparaison avec tenant compte du décalage de lignes. Alors que ton script va considérer toutes les lignes, au-delà de la ligne supplémentaire, comme différentes.
(pour fc, le paramètre pour définir le nb maxi de lignes de décalage, c'est /LBx)
Si tu as l'occasion, tu pourras me donner un exemple d'utilisation? Je viens d'essayer avec deux fichiers au départ identiques, sur l'un des deux j'ai introduit une ligne vierge au milieu, et fc fic1.txt fic2.txt /u /n /lb1 me dit que la resynchronisation a échoué parce que les fichiers sont trop différents. J'ai également essayé de ne pas provoquer de décalage en me contentant de remplacer une ligne par une autre, même message. Il faut que je monte à /lb3 pour que le message d'erreur disparaisse. Curieux, alors qu'il n'y a qu'une ligne de différente et même aucun décalage de ligne dans mon deuxième exemple !
Jacques
|-| /-\\ |_ \(\)7 [°¿°]
Bonsoir !
Pas forcément besoin de définir /LB La valeur par défaut suffit, la plupart du temps.
Autre chose, j'ai cité ton blog dans le paragraphe sur Powershell de mon site Batch. Pas de problème ?
@-salutations
Michel Claveau
Jacques Barathon [MS]
"|-| /- |_ ()7 [°¿°]" wrote in message news:471a57aa$0$27409$
Bonsoir !
Pas forcément besoin de définir /LB La valeur par défaut suffit, la plupart du temps.
C'est ce que j'ai vu, en effet. Ca marche même mieux sans qu'avec d'ailleurs, en tout cas dans l'exemple que j'ai essayé.
Autre chose, j'ai cité ton blog dans le paragraphe sur Powershell de mon site Batch. Pas de problème ?
Non, pas de problème, c'est fait pour ça. Désolé pour nybble, mais c'était justement ma confrontation avec la culture américaine qui m'avait fait écrire ce billet. :-)
Très bonne idée, ton site. J'ai juste relevé une erreur dans le nom d'un utilitaire (à moins que ce soit une version que je ne connais pas): robotcopy.exe. L'outil que je connais s'appelle robocopy.exe, sans le 't'.
Jacques
"|-| /- |_ ()7 [°¿°]" <enleverlesO.OmcO@OmclaveauO.com> wrote in message
news:471a57aa$0$27409$ba4acef3@news.orange.fr...
Bonsoir !
Pas forcément besoin de définir /LB
La valeur par défaut suffit, la plupart du temps.
C'est ce que j'ai vu, en effet. Ca marche même mieux sans qu'avec
d'ailleurs, en tout cas dans l'exemple que j'ai essayé.
Autre chose, j'ai cité ton blog dans le paragraphe sur Powershell de mon
site Batch. Pas de problème ?
Non, pas de problème, c'est fait pour ça. Désolé pour nybble, mais c'était
justement ma confrontation avec la culture américaine qui m'avait fait
écrire ce billet. :-)
Très bonne idée, ton site. J'ai juste relevé une erreur dans le nom d'un
utilitaire (à moins que ce soit une version que je ne connais pas):
robotcopy.exe. L'outil que je connais s'appelle robocopy.exe, sans le 't'.
"|-| /- |_ ()7 [°¿°]" wrote in message news:471a57aa$0$27409$
Bonsoir !
Pas forcément besoin de définir /LB La valeur par défaut suffit, la plupart du temps.
C'est ce que j'ai vu, en effet. Ca marche même mieux sans qu'avec d'ailleurs, en tout cas dans l'exemple que j'ai essayé.
Autre chose, j'ai cité ton blog dans le paragraphe sur Powershell de mon site Batch. Pas de problème ?
Non, pas de problème, c'est fait pour ça. Désolé pour nybble, mais c'était justement ma confrontation avec la culture américaine qui m'avait fait écrire ce billet. :-)
Très bonne idée, ton site. J'ai juste relevé une erreur dans le nom d'un utilitaire (à moins que ce soit une version que je ne connais pas): robotcopy.exe. L'outil que je connais s'appelle robocopy.exe, sans le 't'.
Jacques
|-| /-\\ |_ \(\)7 [°¿°]
Bonsoir !
une erreur : le nom robotcopy.exe. L'outil que je connais s'appelle robocopy.exe
Corrigé. Merci.
@+
MCI
Bonsoir !
une erreur : le nom robotcopy.exe. L'outil que je connais s'appelle robocopy.exe