Deve funcionar assim:
@echo off
set /p x=
xcopy "D:\*.pes" "E:\%x%\" /s
Mas a estrutura de pastas da fonte também será criada no destino.
Para copiar todos os arquivos em apenas uma pasta, isso pode ser usado:
@echo off
set /p x=
for /r "D:\" %%i in (*.pes) do xcopy "%%~fi" "E:\%x%\"
Editar para esclarecer / pesquisar:
FOR / R = loop FOR recursivo ( link )
%% i = variável para cada arquivo
(*. pes) = todos os arquivos na pasta / subpastas que terminam com .pes
Isto não parece ser necessário: "%% ~ fi"
%% ~ fi="expande %% i para um nome de caminho totalmente qualificado" (consulte FOR /? no CMD)
Também parece funcionar assim:
for /r "D:\" %%i in (*.pes) do xcopy "%%i" "E:\%x%\"