Ну и раз уж, любой язык, пусть будет и powershell
Код:
![Выделить весь код](images/misc/selectcode.png)
$fld_src = 'Источник', 'Источник1', 'Источник2'
$fld_dst = 'Результат'
$flt = '*.txt'
dir $fld_src -rec -filt $flt -file|%{$i=0}{
if (!(test-path (
$dst = (gi $fld_dst).fullname+'\'+$_.directory.name
))){md $dst|out-null}
$fdst = $dst+ '\' + $_.basename
while (test-path ($fdst + $_.extension)){
$i = [int] $(if($fdst -match '.*_copy\d+'){
$fdst -replace '.*_copy(\d)','$1'
} else {0}) + 1
$fdst = $dst + '\' + $($_.basename -replace '_copy\d+') + '_copy' + $i
}
move $_.fullname ($fdst + $_.extension)
}
Файлы не перезаписываются, а складываются рядом с добавлением к имени
_copy1,
_copy2,
_copy3 и т.д.