Eu sei que isso foi há alguns anos atrás, mas eu apenas encontrei uma ferramenta freeware que pode fazer exatamente a tarefa necessária. Uma ferramenta de linha de comando, XXCOPY by Pixelab http://www.xxcopy.com/
No meu próprio cenário, recompactei em lote centenas de imagens JPEG usando a opção qscale do FFmpeg e estava procurando uma maneira de substituir apenas arquivos menores. Então eu tentei e funcionou comigo. Eu verifiquei criando uma pasta de backup e comparei os tamanhos das pastas posteriormente. Mesmo número de arquivos para as duas pastas, mas a outra é menor agora.
A pergunta original e a resposta estão aqui:
substituir apenas arquivos menores
https://groups.google.com/forum/#!topic/alt.msdos.batch.nt/Agooyf23kFw
Surpreendentemente, também incluiu uma solução para o problema do Asker. Aqui está uma parte da resposta do autor do XXCOPY:
Você poderia me dar uma dica?
Meu problema: eu tenho alguns arquivos em um diretório e outros em um subdiretório e quero copiar os arquivos no subdiretório. O problema real é substituir somente os arquivos menores.
Você pode experimentar o XXCOPY (um freeware para uso pessoal). O comando que você deseja é provavelmente:
xxcopy \your_source\ \destination\ /s /bzs /y
Existem outras variações nas operações de backup
/BI // backup incremental (skip files of same size and time)
/BN // backup newer files only
/BO // backup older files only
/BX // backup files with a different timestamp
/BZS // backup smaller files only
/BZL // backup larger files only
/BZX // backup files with different size
/BZE // backup files with the same size
/BS // backup files with same size and timestamp
Também possui um recurso de exclusão versátil. Você pode aplicar o mesmo mecanismo de seleção de arquivo nas operações de exclusão. Outra vantagem sobre o Xcopy é que o XXCopy se comporta da mesma maneira em qualquer versão do Windows (95,98, ME, NT / 2K / XP).
Então eu acho que o Asker precisaria do / BZX .