Celui-çi permet pour tout dossier et sous-dossiers d'effectuer pour chaque fichiers un calcul de CRC-32 et recherche ce crc-32 dans le nom du fichier. (infos sur le crc : http://www.commentcamarche.net/base/control.php3)
pour deux fichiers identiques il affiche :
OK - fichier avec le crc 5AC8BC99.ext 5AC8BC99 - fichier sans le crc dans le nom.ext
mon programme est le suivant:
@echo off
::test d'existence de sous-répertoires
set vide=1
for /f "usebackq delims=" %%b in (`"dir /ad/b"`) do if exist %%b set vide=0
::si il y a existence de sous-répertoires
if %vide%==0 (
for /f "usebackq delims=" %%c in (`"dir /ad/b/s | sort /r"`) do (
cd /d %%c
for /f "usebackq delims=" %%d in (`"dir /a-d/b/l"`) do (
for /f "skip=4 tokens=1 delims= " %%e in ('fsum -crc32 "%%d"') do (
echo OK - %%d | find /I "%%e"
if errorlevel 1 echo %%e - %%d
) )
cd .. )
::finalement le dossier en cours
for /f "usebackq delims=" %%d in (`"dir /a-d/b"`) do (
for /f "skip=4 tokens=1 delims= " %%e in ('fsum -crc32 "%%d"') do (
echo OK - %%d | find /I "%%e"
if errorlevel 1 echo %%e - %%d
) )
pause
problème :
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
dans le programme fsum, celui-çi insère 3 lignes qui
empèchent un affichage court des résultats,
je compte donc rajouter une boucle pour
séléctionner seulement le résultat
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
nouveau programme :
@echo off ::test d'existence de sous-répertoires set vide=1 for /f "usebackq delims=" %%b in (`"dir /ad/b"`) do if exist %%b set vide=0 ::si il y a existence de sous-répertoires if %vide%==0 ( for /f "usebackq delims=" %%c in (`"dir /ad/b/s | sort /r"`) do ( cd /d %%c for /f "usebackq delims=" %%d in (`"dir /a-d/b/l"`) do ( for /f "skip=4 tokens=1 delims= " %%f in ( for /f "skip=4 tokens=1 delims= " %%e in ('fsum -crc32 "%%d"') do echo %%d) do ( echo OK - %%d | find /I "%%f" if errorlevel 1 echo %%f - %%d) ) ) ) cd .. ) ::finalement le dossier en cours for /f "usebackq delims=" %%d in (`"dir /a-d/b/l"`) do ( for /f "skip=4 tokens=1 delims= " %%f in ( for /f "skip=4 tokens=1 delims= " %%e in ('fsum -crc32 "%%d"') do echo %%d) do ( echo OK - %%d | find /I "%%f" if errorlevel 1 echo %%f - %%d) ) ) pause
Problème :
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Alors que le début du fichier est IDENTIQUE, la console
me renvoie, pour LA PREMIERE BOUCLE un "do était
inattendu" dans le cas où il n'y a pas de sous-dossiers
alors que le premier marche sans problèmes.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Est-ce que quelq'un est capable de comprendre POURQUOI?
P.S.: fsum est gratuit et peut être aussi téléchargé directement sur
http://camusensei.free.fr/fsum.exe
le problème venant de fsum, si vous avec un programme qui est capable de faire
un crc-32 en batch, je suis également preneur...
