You could do that with a PowerShell one liner.
In this example I filter out all the files with the .txt extension from all the subfolders. And then send them to the Copy-Item Cmdlet.
Combine the Cmdlets Get-Childitem (GCI for short), -recurse, and -filter and then pipe the result to the Copy-Item Cmdlet. Use -WhatIf first to check that the output is what you expected.
Copy to another folder (Use -WhatIf and verify the output to check your command before committing to copying the files):
Get-Childitem -recurse R:Contracts -filter *.txt | Copy-Item -Destination R:ContractsSites -WhatIf
To do multiple filetypes as you've asked, you can just run multiple commands, one for each filetype.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…