Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
problème d'analyse
Auteur Message
Répondre en citant
Message problème d'analyse 
Hello les gens,

J'ai comme qui dirait, un petit problème que je n'arrive pas à résoudre.

Alors voilà, j'ai fais un batch qui démarre en même temps que windows (Démarrer\Programmes\Démarrage\batch.bat)
qui catalogue le disque c: dans un "nouveau fichier.txt" et le compare à "l'ancien fichier.txt"
Les problèmes sont les suivants:

quand j'ouvre le nouveau fichier, ceci est dedant:
Code:
Comparaison de 6.txt et 7.txt...
Les fichiers sont de taille diff‚rente.

n
Comparaison de 6.txt et 7.txt...
Les fichiers sont de taille diff‚rente.

n
Comparaison de 6.txt et 7.txt...
Les fichiers sont de taille diff‚rente.

n
Le format pour le commutateur /n est /n=XXXX
Comparaison de 6.txt et 7.txt...
Les fichiers sont de taille diff‚rente.

n
Comparaison de 6.txt et 7.txt...
Les fichiers sont de taille diff‚rente.

n


Avant que ce problème surgisse (et que je fasse des modifs dans le batch), j'avais ceci:
Code:
Comparaison de D:\1.txt et D:\2.txt...
Erreur de comparaison … OFFSET C546F
fichier1 = 49
fichier2 = 50
Erreur de comparaison … OFFSET C5471
fichier1 = 48
fichier2 = 50
Erreur de comparaison … OFFSET C5472
fichier1 = 57
fichier2 = 53
Erreur de comparaison … OFFSET C562C
fichier1 = 50
fichier2 = 51
Erreur de comparaison … OFFSET C562D
fichier1 = 50
fichier2 = 48
n
Comparaison de D:\1.txt et D:\2.txt...
Erreur de comparaison … OFFSET C546F
fichier1 = 1
fichier2 = 2
Erreur de comparaison … OFFSET C5471
fichier1 = 0
fichier2 = 2
Erreur de comparaison … OFFSET C5472
fichier1 = 9
fichier2 = 5
Erreur de comparaison … OFFSET C562C
fichier1 = 2
fichier2 = 3
Erreur de comparaison … OFFSET C562D
fichier1 = 2
fichier2 = 0
n
Comparaison de D:\1.txt et D:\2.txt...
Erreur de comparaison … LINE 17483
fichier1 = 31
fichier2 = 32
Erreur de comparaison … LINE 17483
fichier1 = 30
fichier2 = 32
Erreur de comparaison … LINE 17483
fichier1 = 39
fichier2 = 35
Erreur de comparaison … LINE 17494
fichier1 = 32
fichier2 = 33
Erreur de comparaison … LINE 17494
fichier1 = 32
fichier2 = 30
n
Le format pour le commutateur /n est /n=XXXX
Comparaison de D:\1.txt et D:\2.txt...
Erreur de comparaison … OFFSET C546F
fichier1 = 31
fichier2 = 32
Erreur de comparaison … OFFSET C5471
fichier1 = 30
fichier2 = 32
Erreur de comparaison … OFFSET C5472
fichier1 = 39
fichier2 = 35
Erreur de comparaison … OFFSET C562C
fichier1 = 32
fichier2 = 33
Erreur de comparaison … OFFSET C562D
fichier1 = 32
fichier2 = 30
n
Comparaison de D:\1.txt et D:\2.txt...
Erreur de comparaison … OFFSET C546F
fichier1 = 31
fichier2 = 32
Erreur de comparaison … OFFSET C5471
fichier1 = 30
fichier2 = 32
Erreur de comparaison … OFFSET C5472
fichier1 = 39
fichier2 = 35
Erreur de comparaison … OFFSET C562C
fichier1 = 32
fichier2 = 33
Erreur de comparaison … OFFSET C562D
fichier1 = 32
fichier2 = 30
n


Malgré ça, j'ai toujours pas trouvé le remède pour :

- pouvoir analyser le nombre de lignes différentes entre les 2 derniers fichiers
- copier les lignes différentes et les placés dans un nouveau fichiers
- pour enfin l'ouvrir et voir les différences depuis celui-ci.

Quelqu'un pourrait-il m'aider (s'il vous plait)?
Si j'ai pas été clair sur le sujet, n'hésitez pas à me le faire savoir et j'essaierais d'expliquer plus simplement Wink .
Voici le batch en attendant

Code:
@echo off
:a
set b=%a%
set /a a+=1
if not exist 1.txt dir c:\/s/b>1.txt
if exist %a%.txt goto a
dir c:\/s>%a%.txt
:re
for %%a in (d a l n c) do (
 echo n|comp %b%.txt %a%.txt /%%a>>%b%-%a%.txt
 )
set /p choix=recommencez l'analyse? (o=oui/n=non):
if %choix%==o goto re
if %choix%==n echo ok
start %b%-%a%.txt


Merci d'avance et à +


ps: si vous en faites un nouveau, hésitez pas sur les détails du batch (ceci fait ça...), merci encore^^




______________________________________________________
Le batch est mon joujou de tout les jours,
plus pour le loisir que pour le travail,
et avec j'apprend presque tout les jours,
comment programmer et le travailler,
pour avoir enfin un résultat cool.

Ed la poignée du 93 (^_^)
Yahoo Messenger MSN Skype
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message problème d'analyse 
Salut Eddy ^

Perso pour ce que tu veux faire je n'utiliserais pas 'comp' ...
'type' me semble plus approprié Wink

@+




______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message problème d'analyse 
Salut,

Si c'est pour l'affichage, je suis d'accord.
Sauf que ça me dit pas :
-si X est différent de Y,
-enregistre le nombres de lignes différentes,
-"type" à la fin.

A moins qu'avec des boucles "for" et un peu d'ingéniosité, on peut calculer :
-le nombre de lignes,
-le nombres de caractères,
-les différences entre X et Y,
-les afficher dans un nouveau .txt et les typer.

Je vais méditer ça en attendant, mais j'avoue qu'un coup de main me sera bien utile Wink .




______________________________________________________
Le batch est mon joujou de tout les jours,
plus pour le loisir que pour le travail,
et avec j'apprend presque tout les jours,
comment programmer et le travailler,
pour avoir enfin un résultat cool.

Ed la poignée du 93 (^_^)
Yahoo Messenger MSN Skype
Répondre en citant
Message problème d'analyse 
j'étais sur un projet de ce genre, avant de decouvrir le forum Batch, j'y ai mis une pause
mais je dois m ' y remettre, et peut etre pouvont nous chercher ensemble Wink


pour si les gents sont en majuscule pour la reponse du set/p:
le commutateur /I, s'il est spécifié, demande d'ignorer la casse dans la comparaison des chaînes.
Le commutateur /I peut également être utilisé pour la forme Chaîne1==Chaîne2 de IF.
Ces comparaisons sont génériques : si les chaînes Chaîne1 et Chaîne2 sont toutes deux faites uniquement de chiffres,
alors elles sont converties en nombres, et une comparaison numérique est alors effectuée.


pour la commande Comp, chez moi aussi, j'ai pas reussi,
essais peut-être avec la commande FC



FC Compare deux fichiers ou groupes de fichiers, et affiche les différences entre eux.

FC [/A] [/C] [/L] [/LBn] [/N][/OFF[LINE]][/T] [/U] [/W] [/nnnn] [lect1:][chemin1]fichier1 [lect2:][chemin2]fichier2 /B [lect1:][chemin1]fichier1 [lect2:][chemin2]fichier2

/A Affiche la 1ère et dernière ligne de chaque ensemble de différences.
/B Effectue une comparaison binaire.
/C Ignore la casse.
/L Compare les fichiers en tant que texte ASCII.
/LBn Définit le nombre maximal de différences consécutives comme égal au nombre de lignes spécifié.
/N Affiche les numéros de ligne pour une comparaison ASCII.
/OFF[LINE] Ne pas ignorer les fichiers dont l'attribut hors connexion a été réglé.
/T Ne convertit pas les tabulations en espaces.
/U Compare les fichiers en tant que fichiers texte UNICODE.
/W Comprime les blancs (tabulations et espaces) pour la comparaison.
/nnnn Spécifie le nombre de lignes consécutives qui doivent correspondre après une différence.
[lect1:][chemin1]fichier1 Spécifie le premier fichier ou ensemble de fichiers à comparer.
[lect2:][chemin2]fichier2 Spécifie le second fichier ou ensemble de fichiers à comparer.


enfin, tien: change le:


Code:



@Title analyse de fichiers.
@Echo off
::
CHCP 1252> nul

SETLOCAL ENABLEdelayedExpansion

set /a b=1
:return
set a=!b!
set /a b+=1
Call:Listage "C:\"
Call:Analyse "List!a!.txt" "List!b!.txt"
::Call:Menu
echo.
echo.ok
echo.
ENDLOCAL
::pause
exit

:Menu
cls
echo.
echo.recommencer l'analyse?
set opt=
set /p opt=oui/non:
if /i "%opt%"=="o" Goto:return
if /i "%opt%"=="n" Goto:eof
Goto:Menu

:Listage
set Disk=%~1
if exist "List!b!.txt" Goto:return
dir /b /o:en /a-d /s "%Disk%" >"List!b!.txt"
if not exist "List!a!.txt" dir /b /o:en /a-d /s "%Disk%" >"List!a!.txt"
Goto:eof

:Analyse
set comparé=%~1
set comparant=%~2
set sortie=List!a!_!b!.txt
cd.>"%sortie%"

fc /N "!comparé!" "!comparant!" >>"%sortie%"

Start "" "%sortie%"
Goto:eof





peut etre que ça n'a rien a voir avec se que tu cherche, moi le code de mon projet doit:

1 :faire une liste de la partition system (et la garder) la liste doit etre faite de preferance juste apres installation.
les fichiers doivent etres listés avec leur poids en octés, (voir d'autres renseignements)
jusque là, ça va.

2 :la comparaison
hum, la ça se complique,
1 Surprisedn refait une liste comme la premiere, et

tien mon code, j'essairais d'expliquer plus tard:

apparement, ça ne fonctionne pas parceque la variable est limité en taille. http://support.microsoft.com/kb/830473/fr
enfin je continu a chercher et si tu as une suggestion ou une idée, ^^ tu peus enlever l'html si ça te gene, j'aurais pas du le mettre trop tôt,.



Code:


@Title Comparer deux fichiers textes.
@Echo off
::
CHCP 1252>nul
::mode con cols=40 lines=12

SETLOCAL ENABLEdelayedExpansion

set /a b=1
:return
set a=!b!
set /a b+=1
Call:Listage "C:\"
::pause
Call:InitSortie
Call:Analyse "List!a!.txt" "List!b!.txt"
::Call:Menu
echo.
echo.ok
echo.
ENDLOCAL
::pause
exit


:Listage
set Disk=%~1
if exist "List!b!.txt" Goto:return
cd.>"List!b!.txt"
for /f "tokens=* delims=" %%f in ('dir /b /o:en /a-d /s "%Disk%"') do (
   echo."%%~dpnxf-%%~zf"
)>>"List!b!.txt"
if not exist "List!a!.txt" (
   cd.>"List!a!.txt"
   for /f "tokens=* delims=" %%f in ('dir /b /o:en /a-d /s "%Disk%"') do (
      echo."%%~dpnxf-%%~zf"
   )>>"List!a!.txt"
)
Goto:eof






On prepare les fichiers de sortie:
:InitSortie
set sortie1=%~dp0TestMANQUANT.hta
set sortie2=%~dp0TestPRESENT.hta
set sortie3=%~dp0Testerr.txt

cd.>"%sortie1%"
echo.^<pre^>>>"%sortie1%"
(
echo.
echo. fichiers qui n'etaient pas là:
echo.
)>>"%sortie1%"

cd.>"%sortie2%"
echo.^<pre^>>>"%sortie2%"
(
echo.
echo. fichiers qui etaient là:
echo.
)>>"%sortie2%"

cd.>"%sortie3%"

Goto:eof



:Analyse

set comparé=%~1
set comparant=%~2

Rem::recuperer les noms de fichiers contenus dans le deuxieme fichier -> !liste2!
Rem:: en faite, tous le contenu du fichier est mis en une seul variable.
FOR /F "TOKENS=* DELIMS= " %%I IN ('Type "%comparant%"') DO (
   set liste2="%%~I" !liste2!
)
::
echo.!liste2!>>"%~dp0test.txt"
::pause

Rem::ON BOUCLE UN FINDSTR SUR !LISTE2! ET ON RECUPÈRE L'ERRORLEVEL.
Rem::SI ERRORLEVEL = 1 ON CRÉE UN FICHIER LOG.txt

for /d %%a in (!liste2!) do (
   findstr /l "%%~a" "%comparé%" > nul
   if "!errorlevel!"=="1" (
      set fmanquant=%%a !fmanquant!
      set adress=%%~dpa
      set adress=!adress:\=/!
      echo.^<a href="!adress!" Title="!adress!"^>%%~dpa^</a^>%%~nxa>>"%sortie1%"
   )
   if "!errorlevel!"=="0" (
      set fpresent=%%a !fpresent!
      set adress=%%~dpa
      set adress=!adress:\=/!
      echo.^<a href="!adress!" Title="!adress!"^>%%~dpa^</a^>%%~nxa>>"%sortie2%"
   )
   if "!errorlevel!"=="2" (
      set err=%%a
      echo.%%a>>"%sortie3%"
   )
)

::Echo.LISTE FICHIERS MANQUANTS: !fmanquant!
::Echo.LISTE FICHIERS PRESENTS: !fpresent!

Goto:eof












______________________________________________________
la vie simple c'est pas facile
Répondre en citant
Message problème d'analyse 
c'est justement ce que je rechercher Isnala. Bien joué d'ailleurs pour tes 2 .bat, ça m'a mis sur la voie pour approfondir l'analyse que je met au point.
Et "fc" fonctionne nickel Okay

En ce qui concerne le commutateur "/i" je vais pas l'utilisé car c'est justement les détails
que je recherche à chaque démarrage de l'ordi.
Ça me permet de mieux comprendre comment fonctionne l'ordinateur. (et ça montre aussi si il y a des fichiers qui n'ont rien à faire ici et là)

exemple mettant sur la voie :
Code:
@echo off
:a
set b=%a%
set /a a+=1
if not exist 1.txt dir c:\/s/b>1.txt
if exist %a%.txt goto a
dir c:\/s/b>%a%.txt
:re
for %%a in (/L /N) do (
 fc %%a %b%.txt %a%.txt>>%b%-%a%.txt
 )
set /p choix=recommencez l'analyse? (o=oui/n=non):
if %choix%==o goto re
if %choix%==n echo ok
start %b%-%a%.txt

Code:
Comparaison des fichiers 6.txt et 7.TXT
***** 6.txt
    2:  c:\CONFIG.SYS
    3:  c:\DELL
***** 7.TXT
    2:  c:\CONFIG.SYS
    3:  c:\Config.txt
    4:  c:\DELL
*****


Plus tard j'irais plus loin dans l'analyse, comme par exemple si X est différent de Y :

- numérote les différentes lignes depuis cette dernière et enregistre sous "lignesY.txt",
- lance une boucle for avec le nombres de lignes obtenues qui ensuite copie les chemins depuis "lignesY.txt" dans "cheminY.txt"
- affiche en finale les différences entre "cheminX.txt" et "cheminY.txt" tel que le nombres de caractères et de lignes ajoutées, retirées et/ou modifiées


mais pour l'instant le batch ici me suffit. Okay .




______________________________________________________
Le batch est mon joujou de tout les jours,
plus pour le loisir que pour le travail,
et avec j'apprend presque tout les jours,
comment programmer et le travailler,
pour avoir enfin un résultat cool.

Ed la poignée du 93 (^_^)
Yahoo Messenger MSN Skype
Répondre en citant
Message problème d'analyse 
Hello les batcheurs,

Mon batch d'analyse sera ajouté à mon menu-souris que voici http://batch.xoo.it/t3336-Menu-souris-avec-batbox.htm?q=




A bientôt ^^




______________________________________________________
Le batch est mon joujou de tout les jours,
plus pour le loisir que pour le travail,
et avec j'apprend presque tout les jours,
comment programmer et le travailler,
pour avoir enfin un résultat cool.

Ed la poignée du 93 (^_^)
Yahoo Messenger MSN Skype
Message problème d'analyse 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch