Comparaison Groupe de Fichiers [Résolu] - Shell/Batch - Programmation
Marsh Posté le 01-07-2008 à 13:24:12
Faut que les fichiers a verifier aient le meme nom. 
Là c'est pour verifier dans system et system32, tu peux rajouter si besoin. 
On suppose que les fichier qui contiennent les noms des fichiers sont dans c:\ 
Les sauvegardes dans c:\backup 
 
 
cd c:\ 
if exist incorrect.txt del incorrect.txt 
set bckfolder=c:\backup 
set sysfolder=c:\windows 
set sys32folder=c:\windows\system32 
for /f "delims=" %%a in (save.txt) do call :cmd "%%a" 
for /f "delims=" %%a in (save32.txt) do call :cmd32 "%%a" 
echo Les fichiers incorrectes sont affiches dans c:\incorrect.txt 
pause 
exit 
 
:cmd 
set file=%~1 
echo N | comp "%backfolder%\%file%" "%sysfolder%\%file%" > NUL 2> NUL 
if errorlevel 1 echo %sysfolder%\%file% >> incorrect.txt 
goto :eof 
 
:cmd32 
set file=%~1 
echo N | comp "%backfolder%\%file%" "%sys32folder%\%file%" > NUL 2> NUL 
if errorlevel 1 echo %sys32folder%\%file% >> incorrect.txt 
goto :eof
Marsh Posté le 02-07-2008 à 14:10:40
Tout d'abord merci pour ta réponse et le temps que tu y as accordé ! 
 
D'autre part, suis-je obligé d'avoir un fichier texte pour chaque répertoire, ne puis-je avoir un seul fichier *.txt où est indiqué le chemin et le nom du dossier ? 
 
Pour cela j'ai bidouillé un peu ton batch... 
cd C:\  
if exist Differences.txt del Differences.txt  
set bckfolder=C:\A_Comparer 
for /f "delims=" %%a in (A_Comparer.txt) do call :cmd "%%a"   
echo Les fichiers differents sont affiches dans C:\Differences.txt  
pause  
exit  
  
:cmd  
set file=%~1  
echo N | comp "%backfolder%\%file%" "%file%" > NUL 2> NUL  
if errorlevel 1 echo %file% >> Differences.txt  
goto :eof  
 
Mais dans mon fichier "Differences.txt", tous les fichiers comparés y sont affichés ! 
Je pense que mon erreur vient de : echo N | comp "%backfolder%\%file%" "%file%" > NUL 2> NUL 
 
Ne sachant comment corriger cette erreur, pourrais-tu encore m'aider ? 
Marsh Posté le 02-07-2008 à 22:43:42
La variable est %bckfolder% et pas %backfolder% 
 
Dans ton fichier A_Comparer.txt tu dois mettre le chemin complet de tes fichiers alors, c'est a dire : C:\undossier\blabla\test.ocx 
 
Je pense que c'est tout...
Marsh Posté le 03-07-2008 à 07:57:49
Alors là, je ne comprend pas... 
 
Mon fichier "A_Compare.txt" ressemblait bien à ce que tu m'as indiqué, mais en changeant le %bckfolder%, j'ai toujours le même résultat (la liste de tous les fichiers se retrouve dans "Differences.txt" )... 
 
Alors qu'avec cmd, en tappant "comp.exe c:\A_Comparer\grpconv.exe C:\Windows\System32\grpconv.exe" il m'indique bien que les fichiers sont identiques...
Marsh Posté le 03-07-2008 à 12:00:44
Le problème vient de la méthode que tu voulais utiliser en faisant ce que t'as voulu faire à ce post là : 
http://forum.hardware.fr/hfr/Progr [...] m#t1754565 
 
Je corrige : 
cd C:\ 
if exist Differences.txt del Differences.txt 
set bckfolder=C:\A_Comparer 
for /f "delims=" %%a in (A_Comparer.txt) do call :cmd "%%a" 
echo Les fichiers differents sont affiches dans C:\Differences.txt 
pause 
exit 
 
:cmd 
set fullfile=%~1 
set file=%~nx1 
echo N | comp "%bckfolder%\%file%" "%fullfile%" > NUL 2> NUL 
if errorlevel 1 echo %fullfile% >> Differences.txt 
goto :eof
Marsh Posté le 03-07-2008 à 13:48:40
Je suis désolé, j'ai copié/collé ton nouveau code et ça ne marche toujours pas... 
 
As-tu fait le test chez toi ou puis-je t'envoyer mes différents fichiers pour voir si l'erreur ne vient pas d'un oubli que j'aurais fait chez moi ?
Marsh Posté le 03-07-2008 à 18:49:09
Montre moi les premieres lignes de ton fichier A_comparer.txt 
Je viens de test avec un fichier, sa marche.... 
 
T'es sous quel windows ?
Marsh Posté le 04-07-2008 à 07:22:21
Je suis sous windows XP et mon fichier "A_Comparer.txt" commence comme ça : 
 
C:\Windows\System32\grpconv.exe 
C:\Windows\PCHealth\HelpCtr\Binaries\helpctr.exe
Marsh Posté le 04-07-2008 à 14:47:34
Chez moi sa marche niquel... 
 
c:\fichier.bat 
| Code : 
 | 
 
 
c:\A_comparer.txt 
| Code : 
 | 
 
 
et le dossier C:\A_comparer\ contient ahui.exe et helpctr.exe 
 
J'ai modifier ahui.exe pour tester et il me le ressort bien dans le fichier Differences.txt 
 
J'peux pas mieux t'expliquer comment tout ça fonctionne, t'avais peut etre mal mis les fichiers au bon endroit ? Si c'est pas ça, j'peux pas t'aider... 
 
 
Ce qui me ressort dans la console 
| Code : 
 | 
 
 
Montre le tiens si sa marche toujours pas.
Marsh Posté le 04-07-2008 à 16:05:22
Non tout était au bon endroit mais j'avais dû faire une erreur dans "fichier.bat"... mais même en relisant je ne vois pas de différences ! 
 
En tous cas ça marche merci beaucoup pour ton travail et ta patience !!!
Marsh Posté le 26-06-2008 à 12:59:31
Bonjour !
Comme je suis en train de customizer l'ensemble des *.dll, *.exe, *.cpl et *.ocx de mon système, que cela prend beaucoup de temps et que les Mises à Jour de Windows continuent de se faire, je souhaiterais créer un batch pour comparer un par un les fichiers originaux que j'ai préalablement sauvegardé dans un dossier et ceux contenus dans le système ("C:\Windows\", "C:\Windows\System32\" et autres).
Dans un post précédent j'ai appris à "utiliser" : for /f "delims=" %%a in (dossiers.txt) do commande "%%a" où "dossiers.txt" contenait les chemins et noms des dossiers auquels je voulais affecter une "commande".
Merci...
Message édité par Scoubi7 le 04-07-2008 à 16:06:13