Bonjour à tous,
Je cherche à comparer le contenu de deux dossiers en listant les fichiers qui ne se trouvent pas dans ces deux dossiers (ceux qui ne sont pas en doublons, donc). Ces dossiers sont très volumineux, d'où le fait que je n'ai guère envie de chercher par moi-même les fichiers différents. J'ai cherché et trouvé un script que j'ai d'abord essayé sur deux dossiers de test (et de petite taille), et qui marche impeccablement bien :
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
25
26
27
28
29
30 @echo OFF setlocal if exist compare.log del compare.log if exist effacer.log del effacer.log set dirA=C:\Users\Documents\DOSSIER TEST\T1 set dirB=C:\Users\Documents\DOSSIER TEST\T2 for /R "%dirA%" %%I in (*.*) do call :_process "%%I" 1 for /R "%dirB%" %%I in (*.*) do call :_process "%%I" 2 goto :eof :_process if %~2==1 ( set dir1=%dirA% set dir2=%dirB% ) else ( set dir1=%dirB% set dir2=%dirA% ) set relpath=%~1 call set relpath=%%relpath:%dir1%=%% if exist "%dir2%%relpath%" ( if %~2==1 ( echo N | fc /A /W /L /N "%dir1%%relpath%" "%dir2%%relpath%" > NUL 2> NUL if errorlevel 1 echo FICHIERS DIFFERENTS %dir1%%relpath% >> compare.log ) ) else ( echo %~d1%~p1%~n1%~x1 >> effacer.log )
Problème, lorsque je lance le script sur l'ordinateur où se trouve les deux dossiers volumineux (oui, c'est une autre machine que celle sur laquelle je travaille), et bien ça ne marche plus. L'invite de commande s'ouvre bien pour quelques secondes (il y a même un fc.exe qui apparaît brièvement dans la liste des processus), mais le fichier log censé lister les différences entre les deux dossiers n’apparaît jamais, il n'est tout simplement pas créé. Je n'ai pourtant rien changé au script entre les deux machines, si ce n'est bien sur les chemins des répertoires à comparer.
Une idée de ce qu'il se passe ? Merci d'avance pour votre aide !![]()
Partager