Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2037 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Résolu] Comparaison Groupe de Fichiers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Comparaison Groupe de Fichiers

n°1751754
Scoubi7
Posté le 26-06-2008 à 12:59:31  profilanswer
 

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".
 

  • J'ai vu également que les commandes "Comp" et "Find" servaient à comparer 2 fichiers, laquelle dois-je utiliser ?
  • Comment organiser mon batch pour qu'il compare les sauvegardes de mes fichiers originaux dont le chemin est contenu dans un fichier "Save.txt" et les fichiers du système dont le chemin est contenu dans un fichier "Systeme.txt" ? (si c'est la bonne méthode...)
  • Enfin, quelle commande dois-je utiliser pour que les fichiers différents ou non trouvés me soient indiqués dans un fichier texte ?


Merci...


Message édité par Scoubi7 le 04-07-2008 à 16:06:13
mood
Publicité
Posté le 26-06-2008 à 12:59:31  profilanswer
 

n°1753957
blastkille​r
Posté le 01-07-2008 à 13:24:12  profilanswer
 

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

n°1754565
Scoubi7
Posté le 02-07-2008 à 14:10:40  profilanswer
 

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 ?


Message édité par Scoubi7 le 02-07-2008 à 14:11:48
n°1754748
blastkille​r
Posté le 02-07-2008 à 22:43:42  profilanswer
 

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...

n°1754855
Scoubi7
Posté le 03-07-2008 à 07:57:49  profilanswer
 

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...

n°1754977
blastkille​r
Posté le 03-07-2008 à 12:00:44  profilanswer
 

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

n°1755049
Scoubi7
Posté le 03-07-2008 à 13:48:40  profilanswer
 

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 ?


Message édité par Scoubi7 le 03-07-2008 à 15:40:18
n°1755268
blastkille​r
Posté le 03-07-2008 à 18:49:09  profilanswer
 

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 ?

n°1755393
Scoubi7
Posté le 04-07-2008 à 07:22:21  profilanswer
 

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

n°1755615
blastkille​r
Posté le 04-07-2008 à 14:47:34  profilanswer
 

Chez moi sa marche niquel...
 
c:\fichier.bat

Code :
  1. cd C:\
  2. if exist Differences.txt del Differences.txt
  3. set bckfolder=C:\A_Comparer
  4. for /f "delims=" %%a in (A_Comparer.txt) do call :cmd "%%a"
  5. echo Les fichiers differents sont affiches dans C:\Differences.txt
  6. pause
  7. exit
  8. :cmd
  9. set fullfile=%~1
  10. set file=%~nx1
  11. echo N | comp "%bckfolder%\%file%" "%fullfile%" > NUL 2> NUL
  12. if errorlevel 1 echo %fullfile% >> Differences.txt
  13. goto :eof


 
c:\A_comparer.txt

Code :
  1. C:\Windows\System32\ahui.exe
  2. C:\Windows\PCHealth\HelpCtr\Binaries\helpctr.exe


 
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 :
  1. C:\>cd C:\
  2. C:\>if exist Differences.txt del Differences.txt
  3. C:\>set bckfolder=C:\A_Comparer
  4. C:\>for /F "delims=" %a in (A_Comparer.txt) do call :cmd "%a"
  5. C:\>call :cmd "C:\Windows\System32\ahui.exe"
  6. C:\>set fullfile=C:\Windows\System32\ahui.exe
  7. C:\>set file=ahui.exe
  8. C:\>echo N   | comp "C:\A_Comparer\ahui.exe" "C:\Windows\System32\ahui.exe"  1>N
  9. UL 2>NUL
  10. C:\>if errorlevel 1 echo C:\Windows\System32\ahui.exe  1>>Differences.txt
  11. C:\>goto :eof
  12. C:\>call :cmd "C:\Windows\PCHealth\HelpCtr\Binaries\helpctr.exe"
  13. C:\>set fullfile=C:\Windows\PCHealth\HelpCtr\Binaries\helpctr.exe
  14. C:\>set file=helpctr.exe
  15. C:\>echo N   | comp "C:\A_Comparer\helpctr.exe" "C:\Windows\PCHealth\HelpCtr\Bin
  16. aries\helpctr.exe"  1>NUL 2>NUL
  17. C:\>if errorlevel 1 echo C:\Windows\PCHealth\HelpCtr\Binaries\helpctr.exe  1>>Di
  18. fferences.txt
  19. C:\>goto :eof
  20. C:\>echo Les fichiers differents sont affiches dans C:\Differences.txt
  21. Les fichiers differents sont affiches dans C:\Differences.txt
  22. C:\>pause
  23. Appuyez sur une touche pour continuer...


 
Montre le tiens si sa marche toujours pas.


Message édité par blastkiller le 04-07-2008 à 14:48:45
mood
Publicité
Posté le 04-07-2008 à 14:47:34  profilanswer
 

n°1755647
Scoubi7
Posté le 04-07-2008 à 16:05:22  profilanswer
 

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 !!!


Message édité par Scoubi7 le 04-07-2008 à 16:05:45

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Résolu] Comparaison Groupe de Fichiers

 

Sujets relatifs
[RESOLU][ORACLE] Sequence - Probleme avec les nombres générés[résolu] erreur de variable
[résolu] Erreur validation W3CVB6 et Crystal Reports : export de fichiers vides
[RESOLU] question débutant vbs[RESOLU] [ACCESS] Parcour de tables et récupération de ligne
[VBA] [Résolu] Comment récupérer la formule d'une cellule ??affichage d'image et ouverture de fichiers sous Firefox
[hibernate][RESOLU]insertion, update OK, lecture avec requete HQL KO[resolu] probleme eregi()
Plus de sujets relatifs à : [Résolu] Comparaison Groupe de Fichiers


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR