web-dev-qa-db-fra.com

Comment faire "diff -r" d'UNIX dans l'invite Cmd Windows?

Comment comparer deux répertoires sur l'invite cmd de Windows m/c? Je veux un équivalent de diff -r d'UNIX.

26
Pradeep

Installez Cygwin et vous pourrez utiliser diff -r sous Windows.

19
RichieHindle

La commande comp pour Windows est ce que vous recherchez.

Voici l'exemple:

Pour comparer le contenu du répertoire C:\Reports avec le répertoire de sauvegarde \\ Sales\Backup\April, tapez:

comp c:\reports \\sales\backup\april 
14
victor hugo

Le moyen le plus simple serait probablement de télécharger diff pour Windows: http://gnuwin32.sourceforge.net/packages/diffutils.htm
Vous pouvez aussi faire quelque chose comme:

dir directory1 > dir1
dir directory2 > dir2
comp dir1 dir2

De plus, certaines versions de Windows sont fournies avec windiff, mais il s’agit d’un outil graphique

8
carlpett

Dans Windows, il existe la commande fc. Je pense que diff est bien meilleur, mais si vous voulez utiliser uniquement ce qui est venu avec l’installation, eh bien, voilà! :)

4
Adri C.S.

Vous pouvez installer Gow et exécuter diff dans l'invite de commande Windows.

3
Victor

Vous pouvez utiliser windiff util inclus dans Windows à partir de la version NT et ultérieure. Il suffit de lancer 'windiff' et un outil graphique apparaîtra.

Fichier -> Comparer les répertoires

http://msdn.Microsoft.com/en-us/library/aa266122(VS.60).aspx

Cet article explique comment l'utiliser à partir de la ligne de commande. Le principal avantage de cet outil est qu'il est déjà inclus et que vous n'avez pas besoin de télécharger et d'installer quoi que ce soit.

2
Ivan Suhinin

Solution partielle avec ROBOCOPY

Une solution partielle (et donc malheureusement pour moi une "non-solution", même si j'avais de grands espoirs pour elle au départ), ce qui peut ne pas être suffisant pour vous:

Il semble que l’outil ROBOCOPY puisse être (ab-) utilisé pour fonctionner comme une comparaison récursive du genre pauvre ; avec la limite malheureuse, apparemment ne compare pas le contenu du fichier. Il semble comparer tailles, dates et éventuellement attributs. L'incantation magique pour cela serait:

ROBOCOPY path1 path2 /e /l /ns /njs /njh /ndl /fp /log:result.txt /it

optionssignification semble être:

  • /e - recurse, y compris les répertoires vides;
  • /l - seulement imprimer un journal, ne pas modifier les fichiers;
  • /ns /njs /njh - n'imprime pas les tailles de fichier, le résumé du travail, l'en-tête du travail;
  • /ndl - "ne pas enregistrer les noms de dossier"
    • NOTE: ceci aurait pour conséquence de sauter des cas de répertoires vides manquants/superflus; si vous n'utilisez pas cela, ceux-ci devraient être enregistrés, mais vous devrez en quelque sorte supprimer les répertoires qui ne diffèrent pas par d'autres moyens;
  • /log:result.txt - écrit les résultats dans le fichier 'result.txt'; Je pense que cela peut être omis et le résultat sera alors affiché sur une sortie standard.

Options additionelles:

Attention: ne pas comparer le contenu du fichier

Comme je l'ai dit plus haut, cela ne semble malheureusement pas comparer le contenu des fichiers. J'ai vérifié cela en exécutant d'abord la commande suivante:

mkdir d1\a\b d2\a\b & echo x > d1\a\b\f & echo y > d2\a\b\f

La plupart du temps, cela devrait produire des fichiers d1\a\b\f et d2\a\b\f avec les mêmes horodatages, que vous pouvez vérifier avec dir d1\a\b\f d2\a\b\f. L'appel robocopy de d1 et d2 a produit un jeu de résultats vide pour moi.

0
akavel

Pour comparer les données avec l'invite de commande, vous pouvez utiliser

COMP/a/l D:\Dossier1\data.txt D:\Dossier2\data.txt

Il peut y avoir différentes options, telles que le nombre spécifique de lignes à rechercher et la recherche insensible à la casse, et même vous pouvez comparer des dossiers avec la commande Invite. Voici d'autres options pour comparer des fichiers et des dossiers avec la commande Invite .

0
Hari

Sous Windows 10, vous pouvez exécuter la commande diff dans bash en activant le shell Bash Linux

0
krpra