Que tal
@echo off
md merged
for /f "delims=" %%f in ('dir /b /ad') do (
if not %%f==merged xcopy "%%f" merged /s /y
)
A opção /y faz com que os arquivos sejam sobrescritos sem solicitar confirmação. Substitua /s por /e se você quiser copiar subdiretórios vazios.
Explicação adicional: for /f "options"(optional)variable in ('command') runs command , captura a saída, atribui tokens (strings) dessa saída à variável e, em seguida, executa o (s) comando (s) após o do . dir /b significa mostrar apenas nomes de arquivos (sem atributos, sem . e .. ); dir /ad significa apenas diretórios de lista (sem arquivos).
O comportamento padrão para for /f é criar um token de cada linha de saída levando todos os caracteres até o primeiro espaço. A opção "delims=" diz para ocupar toda a linha. Esse pouco de paranoia faz o script funcionar mesmo se você tiver nomes de diretório com espaços neles. Eu provavelmente poderia ter fugido dizendo xcopy %%f merged ; mas preciso das aspas duplas em torno de %%f ( xcopy "%%f" merged ) para manipular o caso em que %%f contém espaços.