Page 1 sur 1
[Ex] (BatWrap) Doublons entre deux répertoires
Posté : mar. 26 févr. 2008 11:15
par MClaveau
Nécessite Robocopy (natif dans Vista, téléchargeable pour XP, 2000 ou 2003 ; atttn : ne pas mélanger les versions)
► Afficher le texte
Code : Tout sélectionner
;;;------- fichiers doublons, entre deux répertoires => array
#include <Array.au3>
$dir1="C:\Temp"
$dir2="D:\Tempbis"
$sousrepertoires="OUI" ; utiliser "OUI" ou "NON"
If $sousrepertoires="OUI" Then
$subdir=" /S"
Else
$subdir=""
EndIf
$bat="@echo off " & @CRLF
$bat=$bat& "robocopy "& $dir1 &" "& $dir2 & $subdir &" /L /FP /NJH /NJS /NS /NC /NDL /XC /XN /XO /XX /XL /IS /LOG:%TEMP%\doublons.txt " & @CRLF
$bat=$bat& "FOR /F ""tokens=*"" %%i in (%TEMP%\doublons.txt) DO echo %%i " & @CRLF
$bat=$bat& "del %TEMP%\doublons.txt" & @CRLF
$bat=$bat& "exit" & @CRLF
$r=wrapbat($bat)
$array = StringSplit($r,@CR)
_ArrayDelete($array, $array[0])
_ArrayDelete($array, 3)
_ArrayDelete($array, 2)
_ArrayDelete($array, 1)
$array[0]-=4
_ArrayDisplay($array,"Doublons")
Exit
Func wrapbat($bat)
$file = FileOpen(@TempDir & "\tmp.bat", 2)
FileWrite($file, $bat)
FileClose($file)
$result=""
$pid = Run("cmd /c" & @TempDir & "\tmp.bat","",0,6)
While 1
$result &= StdoutRead($pid)
If @error Then ExitLoop
Wend
FileDelete($file)
return $result
EndFunc