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