batch windows+comparer deux repertoires+lister fichiers differents
8 réponses
TOF
Bonjour
Je cherche à comparer les fichiers de 2 repertoires (avec toute
l'arborescense) et de récuperer une liste de fichiers nouveaux ou modifiés
(conserver les +recents) avec leur chemin respectif dans un fichier txt.
J'ai essayé de m'inspirer d'un batch ou l'utilisateur compare 2 repertoires
mais dans c:\windows\system32.
Je n'arrive pas à interpoler cette recherche à 2 emplacements persos (par
exemple c:\monrep\)
De + A la difference du script ci dessous où un fichier A_Comparer.txt donne
la liste des fichiers à comparer, moi je veux le faire pour tous les
fichiers contenus dans mes 2 dossiers
Merci d'avance
Code :
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
dominique
TOF wrote:
Bonjour
Je cherche à comparer les fichiers de 2 repertoires (avec toute l'arborescense) et de récuperer une liste de fichiers nouveaux ou modifiés (conserver les +recents) avec leur chemin respectif dans un fichier txt.
J'ai essayé de m'inspirer d'un batch ou l'utilisateur compare 2 repertoires mais dans c:windowssystem32.
Je n'arrive pas à interpoler cette recherche à 2 emplacements persos (par exemple c:monrep)
un vieux truc archivé qui fait à peu près ça :
@echo off setlocal
if exist compare.log del compare.log
set dirA=C:dir1 set dirB=C:dir2
for /R "%dirA%" %%I in (*.*) do call :_process "%%I" for /R "%dirB%" %%I in (*.*) do call :_process "%%I" goto :eof
:_process set relpath=%~1 echo 1%relpath% call set relpath=%%relpath:%dirA%=%% echo 2%relpath% if exist "%dirB%%relpath%" ( fc /A /W /L /N "%dirA%%relpath%" "%dirB%%relpath%" >> compare.log ) else ( echo %~n1%~x1 exists only in %~d1%~p1 >> compare.log )
goto :eof pause
TOF wrote:
Bonjour
Je cherche à comparer les fichiers de 2 repertoires (avec toute
l'arborescense) et de récuperer une liste de fichiers nouveaux ou modifiés
(conserver les +recents) avec leur chemin respectif dans un fichier txt.
J'ai essayé de m'inspirer d'un batch ou l'utilisateur compare 2 repertoires
mais dans c:windowssystem32.
Je n'arrive pas à interpoler cette recherche à 2 emplacements persos (par
exemple c:monrep)
un vieux truc archivé qui fait à peu près ça :
@echo off
setlocal
if exist compare.log del compare.log
set dirA=C:dir1
set dirB=C:dir2
for /R "%dirA%" %%I in (*.*) do call :_process "%%I"
for /R "%dirB%" %%I in (*.*) do call :_process "%%I"
goto :eof
:_process
set relpath=%~1
echo 1%relpath%
call set relpath=%%relpath:%dirA%=%%
echo 2%relpath%
if exist "%dirB%%relpath%" (
fc /A /W /L /N "%dirA%%relpath%" "%dirB%%relpath%" >> compare.log
) else (
echo %~n1%~x1 exists only in %~d1%~p1 >> compare.log
)
Je cherche à comparer les fichiers de 2 repertoires (avec toute l'arborescense) et de récuperer une liste de fichiers nouveaux ou modifiés (conserver les +recents) avec leur chemin respectif dans un fichier txt.
J'ai essayé de m'inspirer d'un batch ou l'utilisateur compare 2 repertoires mais dans c:windowssystem32.
Je n'arrive pas à interpoler cette recherche à 2 emplacements persos (par exemple c:monrep)
un vieux truc archivé qui fait à peu près ça :
@echo off setlocal
if exist compare.log del compare.log
set dirA=C:dir1 set dirB=C:dir2
for /R "%dirA%" %%I in (*.*) do call :_process "%%I" for /R "%dirB%" %%I in (*.*) do call :_process "%%I" goto :eof
:_process set relpath=%~1 echo 1%relpath% call set relpath=%%relpath:%dirA%=%% echo 2%relpath% if exist "%dirB%%relpath%" ( fc /A /W /L /N "%dirA%%relpath%" "%dirB%%relpath%" >> compare.log ) else ( echo %~n1%~x1 exists only in %~d1%~p1 >> compare.log )
goto :eof pause
TOF
Salut
merci pour ce code mais j'ai 2 remarques: - pourquoi il re liste l'intégralité des fichiers du dir2 en disant qu'ils ne sont que dans dir2 à la fin dans le compare.log? - n'est il pas possible de n'avoir que le chemin des fichiers qui sont différents dans le compare.log?
merci par avance
tof
"dominique" a écrit dans le message de groupe de discussion : g9hfrq$krv$
TOF wrote:
Bonjour
Je cherche à comparer les fichiers de 2 repertoires (avec toute l'arborescense) et de récuperer une liste de fichiers nouveaux ou modifiés (conserver les +recents) avec leur chemin respectif dans un fichier txt.
J'ai essayé de m'inspirer d'un batch ou l'utilisateur compare 2 repertoires mais dans c:windowssystem32.
Je n'arrive pas à interpoler cette recherche à 2 emplacements persos (par exemple c:monrep)
un vieux truc archivé qui fait à peu près ça :
@echo off setlocal
if exist compare.log del compare.log
set dirA=C:dir1 set dirB=C:dir2
for /R "%dirA%" %%I in (*.*) do call :_process "%%I" for /R "%dirB%" %%I in (*.*) do call :_process "%%I" goto :eof
:_process set relpath=%~1 echo 1%relpath% call set relpath=%%relpath:%dirA%=%% echo 2%relpath% if exist "%dirB%%relpath%" ( fc /A /W /L /N "%dirA%%relpath%" "%dirB%%relpath%" >> compare.log ) else ( echo %~n1%~x1 exists only in %~d1%~p1 >> compare.log )
goto :eof pause
Salut
merci pour ce code mais j'ai 2 remarques:
- pourquoi il re liste l'intégralité des fichiers du dir2 en disant qu'ils
ne sont que dans dir2 à la fin dans le compare.log?
- n'est il pas possible de n'avoir que le chemin des fichiers qui sont
différents dans le compare.log?
merci par avance
tof
"dominique" <dominique@domi.com> a écrit dans le message de groupe de
discussion : g9hfrq$krv$1@news.albasani.net...
TOF wrote:
Bonjour
Je cherche à comparer les fichiers de 2 repertoires (avec toute
l'arborescense) et de récuperer une liste de fichiers nouveaux ou
modifiés
(conserver les +recents) avec leur chemin respectif dans un fichier txt.
J'ai essayé de m'inspirer d'un batch ou l'utilisateur compare 2
repertoires
mais dans c:windowssystem32.
Je n'arrive pas à interpoler cette recherche à 2 emplacements persos (par
exemple c:monrep)
un vieux truc archivé qui fait à peu près ça :
@echo off
setlocal
if exist compare.log del compare.log
set dirA=C:dir1
set dirB=C:dir2
for /R "%dirA%" %%I in (*.*) do call :_process "%%I"
for /R "%dirB%" %%I in (*.*) do call :_process "%%I"
goto :eof
:_process
set relpath=%~1
echo 1%relpath%
call set relpath=%%relpath:%dirA%=%%
echo 2%relpath%
if exist "%dirB%%relpath%" (
fc /A /W /L /N "%dirA%%relpath%" "%dirB%%relpath%" >> compare.log
) else (
echo %~n1%~x1 exists only in %~d1%~p1 >> compare.log
)
merci pour ce code mais j'ai 2 remarques: - pourquoi il re liste l'intégralité des fichiers du dir2 en disant qu'ils ne sont que dans dir2 à la fin dans le compare.log? - n'est il pas possible de n'avoir que le chemin des fichiers qui sont différents dans le compare.log?
merci par avance
tof
"dominique" a écrit dans le message de groupe de discussion : g9hfrq$krv$
TOF wrote:
Bonjour
Je cherche à comparer les fichiers de 2 repertoires (avec toute l'arborescense) et de récuperer une liste de fichiers nouveaux ou modifiés (conserver les +recents) avec leur chemin respectif dans un fichier txt.
J'ai essayé de m'inspirer d'un batch ou l'utilisateur compare 2 repertoires mais dans c:windowssystem32.
Je n'arrive pas à interpoler cette recherche à 2 emplacements persos (par exemple c:monrep)
un vieux truc archivé qui fait à peu près ça :
@echo off setlocal
if exist compare.log del compare.log
set dirA=C:dir1 set dirB=C:dir2
for /R "%dirA%" %%I in (*.*) do call :_process "%%I" for /R "%dirB%" %%I in (*.*) do call :_process "%%I" goto :eof
:_process set relpath=%~1 echo 1%relpath% call set relpath=%%relpath:%dirA%=%% echo 2%relpath% if exist "%dirB%%relpath%" ( fc /A /W /L /N "%dirA%%relpath%" "%dirB%%relpath%" >> compare.log ) else ( echo %~n1%~x1 exists only in %~d1%~p1 >> compare.log )
goto :eof pause
dominique
TOF wrote:
Salut
merci pour ce code mais j'ai 2 remarques: - pourquoi il re liste l'intégralité des fichiers du dir2 en disant qu'ils ne sont que dans dir2 à la fin dans le compare.log? - n'est il pas possible de n'avoir que le chemin des fichiers qui sont différents dans le compare.log?
merci par avance
Ca buggait un peu.. Ca doit être mieux. Pour le compare.log, c'est à toi de gérer la sortie de la commande fc comme dans ton exemple avec errorlevel...
@echo off setlocal
if exist compare.log del compare.log
set dirA=D:dir1 set dirB=D:dir2
for /R "%dirA%" %%I in (*.*) do call :_process "%%I" 1 for /R "%dirB%" %%I in (*.*) do call :_process "%%I" 2 goto :eof
:_process if %~2==1 ( set dir1=%dirA% set dir2=%dirB% ) else ( set dir1=%dirB% set dir2=%dirA% ) set relpath=%~1 call set relpath=%%relpath:%dir1%=%% if exist "%dir2%%relpath%" ( if %~2==1 ( fc /A /W /L /N "%dir1%%relpath%" "%dir2%%relpath%" >> compare.log ) ) else ( echo %~n1%~x1 exists only in %~d1%~p1 >> compare.log )
TOF wrote:
Salut
merci pour ce code mais j'ai 2 remarques:
- pourquoi il re liste l'intégralité des fichiers du dir2 en disant
qu'ils ne sont que dans dir2 à la fin dans le compare.log?
- n'est il pas possible de n'avoir que le chemin des fichiers qui sont
différents dans le compare.log?
merci par avance
Ca buggait un peu..
Ca doit être mieux.
Pour le compare.log, c'est à toi de gérer la sortie de la commande fc
comme dans ton exemple avec errorlevel...
@echo off
setlocal
if exist compare.log del compare.log
set dirA=D:dir1
set dirB=D:dir2
for /R "%dirA%" %%I in (*.*) do call :_process "%%I" 1
for /R "%dirB%" %%I in (*.*) do call :_process "%%I" 2
goto :eof
:_process
if %~2==1 (
set dir1=%dirA%
set dir2=%dirB%
) else (
set dir1=%dirB%
set dir2=%dirA%
)
set relpath=%~1
call set relpath=%%relpath:%dir1%=%%
if exist "%dir2%%relpath%" (
if %~2==1 (
fc /A /W /L /N "%dir1%%relpath%" "%dir2%%relpath%" >> compare.log
) ) else (
echo %~n1%~x1 exists only in %~d1%~p1 >> compare.log
)
merci pour ce code mais j'ai 2 remarques: - pourquoi il re liste l'intégralité des fichiers du dir2 en disant qu'ils ne sont que dans dir2 à la fin dans le compare.log? - n'est il pas possible de n'avoir que le chemin des fichiers qui sont différents dans le compare.log?
merci par avance
Ca buggait un peu.. Ca doit être mieux. Pour le compare.log, c'est à toi de gérer la sortie de la commande fc comme dans ton exemple avec errorlevel...
@echo off setlocal
if exist compare.log del compare.log
set dirA=D:dir1 set dirB=D:dir2
for /R "%dirA%" %%I in (*.*) do call :_process "%%I" 1 for /R "%dirB%" %%I in (*.*) do call :_process "%%I" 2 goto :eof
:_process if %~2==1 ( set dir1=%dirA% set dir2=%dirB% ) else ( set dir1=%dirB% set dir2=%dirA% ) set relpath=%~1 call set relpath=%%relpath:%dir1%=%% if exist "%dir2%%relpath%" ( if %~2==1 ( fc /A /W /L /N "%dir1%%relpath%" "%dir2%%relpath%" >> compare.log ) ) else ( echo %~n1%~x1 exists only in %~d1%~p1 >> compare.log )
TOF
Salut
un grand merci à toi dominique. cela fait exactement ce que je veux....
c'etait trop dur pour un newbie comme moi
voici le code final tel que je le voulais:
@echo OFF setlocal
if exist compare.log del compare.log if exist effacer.log del effacer.log
set dirA=c:dir1 set dirB=c:dir2
for /R "%dirA%" %%I in (*.*) do call :_process "%%I" 1 for /R "%dirB%" %%I in (*.*) do call :_process "%%I" 2 goto :eof
:_process if %~2==1 ( set dir1=%dirA% set dir2=%dirB% ) else ( set dir1=%dirB% set dir2=%dirA% ) set relpath=%~1 call set relpath=%%relpath:%dir1%=%% if exist "%dir2%%relpath%" ( if %~2==1 ( echo N | fc /A /W /L /N "%dir1%%relpath%" "%dir2%%relpath%" > NUL 2> NUL if errorlevel 1 echo FICHIERS DIFFERENTS %dir1%%relpath% >> compare.log ) ) else ( echo %~d1%~p1%~n1%~x1 >> effacer.log )
"dominique" a écrit dans le message de groupe de discussion : g9k6q3$oi6$
TOF wrote:
Salut
merci pour ce code mais j'ai 2 remarques: - pourquoi il re liste l'intégralité des fichiers du dir2 en disant qu'ils ne sont que dans dir2 à la fin dans le compare.log? - n'est il pas possible de n'avoir que le chemin des fichiers qui sont différents dans le compare.log?
merci par avance
Ca buggait un peu.. Ca doit être mieux. Pour le compare.log, c'est à toi de gérer la sortie de la commande fc comme dans ton exemple avec errorlevel...
@echo off setlocal
if exist compare.log del compare.log
set dirA=D:dir1 set dirB=D:dir2
for /R "%dirA%" %%I in (*.*) do call :_process "%%I" 1 for /R "%dirB%" %%I in (*.*) do call :_process "%%I" 2 goto :eof
:_process if %~2==1 ( set dir1=%dirA% set dir2=%dirB% ) else ( set dir1=%dirB% set dir2=%dirA% ) set relpath=%~1 call set relpath=%%relpath:%dir1%=%% if exist "%dir2%%relpath%" ( if %~2==1 ( fc /A /W /L /N "%dir1%%relpath%" "%dir2%%relpath%" >> compare.log ) ) else ( echo %~n1%~x1 exists only in %~d1%~p1 >> compare.log )
Salut
un grand merci à toi dominique. cela fait exactement ce que je veux....
c'etait trop dur pour un newbie comme moi
voici le code final tel que je le voulais:
@echo OFF
setlocal
if exist compare.log del compare.log
if exist effacer.log del effacer.log
set dirA=c:dir1
set dirB=c:dir2
for /R "%dirA%" %%I in (*.*) do call :_process "%%I" 1
for /R "%dirB%" %%I in (*.*) do call :_process "%%I" 2
goto :eof
:_process
if %~2==1 (
set dir1=%dirA%
set dir2=%dirB%
) else (
set dir1=%dirB%
set dir2=%dirA%
)
set relpath=%~1
call set relpath=%%relpath:%dir1%=%%
if exist "%dir2%%relpath%" (
if %~2==1 (
echo N | fc /A /W /L /N "%dir1%%relpath%" "%dir2%%relpath%" > NUL 2> NUL
if errorlevel 1 echo FICHIERS DIFFERENTS %dir1%%relpath% >> compare.log
) ) else (
echo %~d1%~p1%~n1%~x1 >> effacer.log
)
"dominique" <dominique@domi.com> a écrit dans le message de groupe de
discussion : g9k6q3$oi6$1@news.albasani.net...
TOF wrote:
Salut
merci pour ce code mais j'ai 2 remarques:
- pourquoi il re liste l'intégralité des fichiers du dir2 en disant
qu'ils ne sont que dans dir2 à la fin dans le compare.log?
- n'est il pas possible de n'avoir que le chemin des fichiers qui sont
différents dans le compare.log?
merci par avance
Ca buggait un peu..
Ca doit être mieux.
Pour le compare.log, c'est à toi de gérer la sortie de la commande fc
comme dans ton exemple avec errorlevel...
@echo off
setlocal
if exist compare.log del compare.log
set dirA=D:dir1
set dirB=D:dir2
for /R "%dirA%" %%I in (*.*) do call :_process "%%I" 1
for /R "%dirB%" %%I in (*.*) do call :_process "%%I" 2
goto :eof
:_process
if %~2==1 (
set dir1=%dirA%
set dir2=%dirB%
) else (
set dir1=%dirB%
set dir2=%dirA%
)
set relpath=%~1
call set relpath=%%relpath:%dir1%=%%
if exist "%dir2%%relpath%" (
if %~2==1 (
fc /A /W /L /N "%dir1%%relpath%" "%dir2%%relpath%" >> compare.log
) ) else (
echo %~n1%~x1 exists only in %~d1%~p1 >> compare.log
)
un grand merci à toi dominique. cela fait exactement ce que je veux....
c'etait trop dur pour un newbie comme moi
voici le code final tel que je le voulais:
@echo OFF setlocal
if exist compare.log del compare.log if exist effacer.log del effacer.log
set dirA=c:dir1 set dirB=c:dir2
for /R "%dirA%" %%I in (*.*) do call :_process "%%I" 1 for /R "%dirB%" %%I in (*.*) do call :_process "%%I" 2 goto :eof
:_process if %~2==1 ( set dir1=%dirA% set dir2=%dirB% ) else ( set dir1=%dirB% set dir2=%dirA% ) set relpath=%~1 call set relpath=%%relpath:%dir1%=%% if exist "%dir2%%relpath%" ( if %~2==1 ( echo N | fc /A /W /L /N "%dir1%%relpath%" "%dir2%%relpath%" > NUL 2> NUL if errorlevel 1 echo FICHIERS DIFFERENTS %dir1%%relpath% >> compare.log ) ) else ( echo %~d1%~p1%~n1%~x1 >> effacer.log )
"dominique" a écrit dans le message de groupe de discussion : g9k6q3$oi6$
TOF wrote:
Salut
merci pour ce code mais j'ai 2 remarques: - pourquoi il re liste l'intégralité des fichiers du dir2 en disant qu'ils ne sont que dans dir2 à la fin dans le compare.log? - n'est il pas possible de n'avoir que le chemin des fichiers qui sont différents dans le compare.log?
merci par avance
Ca buggait un peu.. Ca doit être mieux. Pour le compare.log, c'est à toi de gérer la sortie de la commande fc comme dans ton exemple avec errorlevel...
@echo off setlocal
if exist compare.log del compare.log
set dirA=D:dir1 set dirB=D:dir2
for /R "%dirA%" %%I in (*.*) do call :_process "%%I" 1 for /R "%dirB%" %%I in (*.*) do call :_process "%%I" 2 goto :eof
:_process if %~2==1 ( set dir1=%dirA% set dir2=%dirB% ) else ( set dir1=%dirB% set dir2=%dirA% ) set relpath=%~1 call set relpath=%%relpath:%dir1%=%% if exist "%dir2%%relpath%" ( if %~2==1 ( fc /A /W /L /N "%dir1%%relpath%" "%dir2%%relpath%" >> compare.log ) ) else ( echo %~n1%~x1 exists only in %~d1%~p1 >> compare.log )
TOF
J'ai tout de même l'impression qu'il ne parcours pas l'arborescence complète..
Ou bien qu'il ne comprends pas certains noms de fichiers style DW-1533E LOT 2_Compo_tour_tech_niv_+0.30_à_14.50.dwg
merci
"dominique" a écrit dans le message de groupe de discussion : g9k6q3$oi6$
TOF wrote:
Salut
merci pour ce code mais j'ai 2 remarques: - pourquoi il re liste l'intégralité des fichiers du dir2 en disant qu'ils ne sont que dans dir2 à la fin dans le compare.log? - n'est il pas possible de n'avoir que le chemin des fichiers qui sont différents dans le compare.log?
merci par avance
Ca buggait un peu.. Ca doit être mieux. Pour le compare.log, c'est à toi de gérer la sortie de la commande fc comme dans ton exemple avec errorlevel...
@echo off setlocal
if exist compare.log del compare.log
set dirA=D:dir1 set dirB=D:dir2
for /R "%dirA%" %%I in (*.*) do call :_process "%%I" 1 for /R "%dirB%" %%I in (*.*) do call :_process "%%I" 2 goto :eof
:_process if %~2==1 ( set dir1=%dirA% set dir2=%dirB% ) else ( set dir1=%dirB% set dir2=%dirA% ) set relpath=%~1 call set relpath=%%relpath:%dir1%=%% if exist "%dir2%%relpath%" ( if %~2==1 ( fc /A /W /L /N "%dir1%%relpath%" "%dir2%%relpath%" >> compare.log ) ) else ( echo %~n1%~x1 exists only in %~d1%~p1 >> compare.log )
J'ai tout de même l'impression qu'il ne parcours pas l'arborescence
complète..
Ou bien qu'il ne comprends pas certains noms de fichiers style DW-1533E LOT
2_Compo_tour_tech_niv_+0.30_à_14.50.dwg
merci
"dominique" <dominique@domi.com> a écrit dans le message de groupe de
discussion : g9k6q3$oi6$1@news.albasani.net...
TOF wrote:
Salut
merci pour ce code mais j'ai 2 remarques:
- pourquoi il re liste l'intégralité des fichiers du dir2 en disant
qu'ils ne sont que dans dir2 à la fin dans le compare.log?
- n'est il pas possible de n'avoir que le chemin des fichiers qui sont
différents dans le compare.log?
merci par avance
Ca buggait un peu..
Ca doit être mieux.
Pour le compare.log, c'est à toi de gérer la sortie de la commande fc
comme dans ton exemple avec errorlevel...
@echo off
setlocal
if exist compare.log del compare.log
set dirA=D:dir1
set dirB=D:dir2
for /R "%dirA%" %%I in (*.*) do call :_process "%%I" 1
for /R "%dirB%" %%I in (*.*) do call :_process "%%I" 2
goto :eof
:_process
if %~2==1 (
set dir1=%dirA%
set dir2=%dirB%
) else (
set dir1=%dirB%
set dir2=%dirA%
)
set relpath=%~1
call set relpath=%%relpath:%dir1%=%%
if exist "%dir2%%relpath%" (
if %~2==1 (
fc /A /W /L /N "%dir1%%relpath%" "%dir2%%relpath%" >> compare.log
) ) else (
echo %~n1%~x1 exists only in %~d1%~p1 >> compare.log
)
J'ai tout de même l'impression qu'il ne parcours pas l'arborescence complète..
Ou bien qu'il ne comprends pas certains noms de fichiers style DW-1533E LOT 2_Compo_tour_tech_niv_+0.30_à_14.50.dwg
merci
"dominique" a écrit dans le message de groupe de discussion : g9k6q3$oi6$
TOF wrote:
Salut
merci pour ce code mais j'ai 2 remarques: - pourquoi il re liste l'intégralité des fichiers du dir2 en disant qu'ils ne sont que dans dir2 à la fin dans le compare.log? - n'est il pas possible de n'avoir que le chemin des fichiers qui sont différents dans le compare.log?
merci par avance
Ca buggait un peu.. Ca doit être mieux. Pour le compare.log, c'est à toi de gérer la sortie de la commande fc comme dans ton exemple avec errorlevel...
@echo off setlocal
if exist compare.log del compare.log
set dirA=D:dir1 set dirB=D:dir2
for /R "%dirA%" %%I in (*.*) do call :_process "%%I" 1 for /R "%dirB%" %%I in (*.*) do call :_process "%%I" 2 goto :eof
:_process if %~2==1 ( set dir1=%dirA% set dir2=%dirB% ) else ( set dir1=%dirB% set dir2=%dirA% ) set relpath=%~1 call set relpath=%%relpath:%dir1%=%% if exist "%dir2%%relpath%" ( if %~2==1 ( fc /A /W /L /N "%dir1%%relpath%" "%dir2%%relpath%" >> compare.log ) ) else ( echo %~n1%~x1 exists only in %~d1%~p1 >> compare.log )
dominique
TOF wrote:
J'ai tout de même l'impression qu'il ne parcours pas l'arborescence complète..
Il manque encore des ""
echo %~n1%~x1 exists only in %~d1%~p1 => echo "%~n1%~x1" exists only in "%~d1%~p1"
TOF wrote:
J'ai tout de même l'impression qu'il ne parcours pas l'arborescence
complète..
Il manque encore des ""
echo %~n1%~x1 exists only in %~d1%~p1
=>
echo "%~n1%~x1" exists only in "%~d1%~p1"
est il possible de faire une comparaison de nom de dossier entre deux chemins?
Comme ca c'est plus simple. je supprime les dossiers en trop et basta...
merci d'avance
"dominique" a écrit dans le message de groupe de discussion : g9mr7l$noi$
TOF wrote:
J'ai tout de même l'impression qu'il ne parcours pas l'arborescence complète..
Il manque encore des ""
echo %~n1%~x1 exists only in %~d1%~p1 => echo "%~n1%~x1" exists only in "%~d1%~p1"
Christian ASTOR
On 1 sep, 11:18, "TOF" wrote:
Je cherche à comparer les fichiers de 2 repertoires (avec toute l'arborescense) et de récuperer une liste de fichiers nouveaux ou modif iés (conserver les +recents) avec leur chemin respectif dans un fichier txt.
Je cherche à comparer les fichiers de 2 repertoires (avec toute
l'arborescense) et de récuperer une liste de fichiers nouveaux ou modif iés
(conserver les +recents) avec leur chemin respectif dans un fichier txt.
Il ya divers exemples en C ou C++ sur le Web.
Par ex, en C++ : http://www.personalmicrocosms.com/Pages/dircmp.aspx
Il suffit de modifier le source pour changer éventuellement le log...
Je cherche à comparer les fichiers de 2 repertoires (avec toute l'arborescense) et de récuperer une liste de fichiers nouveaux ou modif iés (conserver les +recents) avec leur chemin respectif dans un fichier txt.